プロが教える店舗&オフィスのセキュリティ対策術

いつもお世話になっております。

パッケージ化について教えて下さい。

■動作確認環境

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行行っているだけです。


自分ではもうどこをどうしたらよいのか、さっぱり分からなくなってしまいました。

間違っている部分をどなたかにご教授頂けたら幸いです。

宜しくお願い致します。

A 回答 (2件)

java実行時のディレクトリとjavaコマンドの引数を書いてみてください。

この回答への補足

Bonjin さん、ご回答ありがとうございます。

java実行時のディレクトリとjavaコマンドの引数は、以下になります。

C:\sample\testpackage01>java TestParent

再度ご回答頂けたら幸いです。

宜しくお願い致します。

補足日時:2006/10/20 10:11
    • good
    • 0

>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

参考URL:http://www.nextindex.net/java/packageUse.html
    • good
    • 0
この回答へのお礼

今回は、javaコマンドの後のクラス名は「完全修飾クラス名」を記述することによって、疑問に思っていたことは解決致しました。

main実行クラスについては、あくまでもデバッグのため暫定的に記述したものです。

ご回答ありがとうございました。

お礼日時:2006/10/24 19:28

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!