- 締切済み
パッケージ化とクラスパスについて
いつもお世話になっております。 パッケージ化について教えて下さい。 ■動作確認環境 j2sdk 1.4.2_12 CLASSPATH の設定は .;C:\sample です。 ----- 現在、以下のようなフォルダ構成で、パッケージ化とアクセス制御の勉強をしています。 C:\sample |__ testpackage01 |__ TestParent.java C:\sample |__ testpackage02 |__ TestChild.java やりたかったことは、TestChild が TestParent を継承し、"別パッケージでも親クラスの protected 変数 / メソッドはアクセスできる"ということの確認です。 しかし、TestParent の実行時に "NoClassDefFoundError: TestParent (wrong name: testpackage01/TestParent)" の RunTimeException が発生してしまいます。 コンパイルは正常に通ります。また、TestParent のパッケージ宣言 "package testpackage01;" をコメントアウトすると、正常に実行できます。 TestParent の処理は、mainメソッドの中で、文字列の表示を 1行行っているだけです。 自分ではもうどこをどうしたらよいのか、さっぱり分からなくなってしまいました。 間違っている部分をどなたかにご教授頂けたら幸いです。 宜しくお願い致します。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- hrm_mmm
- ベストアンサー率63% (292/459)
>C:\sample\testpackage01>java TestParent 実行開始ディレクトリー=無名パッケージとして扱われるので、 TestParentに package宣言を書くとエラーになります。 それに、package内のクラスから直接実行開始というのは、packageの解説サイトでもあまりみたことないですけど。 実行開始ディレクトリー(無名パッケージ)を C:\sample として、ここにmain実行クラスをおいて mainクラスで testpackage01.TestParent と testpackage02.TestChild とのインスタンスを生成して、各インスタンスから実行したmethodがどのように振る舞うのかを見ることで protected methodや public methodの挙動を捕らえることが出来ると思います。 http://www.nextindex.net/java/packageUse.html
- Bonjin
- ベストアンサー率43% (418/971)
java実行時のディレクトリとjavaコマンドの引数を書いてみてください。
補足
Bonjin さん、ご回答ありがとうございます。 java実行時のディレクトリとjavaコマンドの引数は、以下になります。 C:\sample\testpackage01>java TestParent 再度ご回答頂けたら幸いです。 宜しくお願い致します。
お礼
今回は、javaコマンドの後のクラス名は「完全修飾クラス名」を記述することによって、疑問に思っていたことは解決致しました。 main実行クラスについては、あくまでもデバッグのため暫定的に記述したものです。 ご回答ありがとうございました。