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

同一パッケージ内で継承したクラス Test2.java をコンパイルすると「シンボルを見つけられません シンボル:クラス Test1」とエラーになります。
--------Test1.java-------
package test;
public class Test1{
メソッド
}
-------------------------
--------Test2.java-------
package test;
public class Test2 extends Test1{
メソッド
}
-------------------------
Test1.java,Test2.javaとも同一フォルダ(D:\java\test)にあります。
ちなみにカレントディレクトリをD:\java\testにして
javac Test2.java
でコンパイルしようとしています。

同一パッケージ内のクラスを継承するというのはおかしなことなんでしょうか?また、コンパイルの仕方もあわせてご教示願えれば助かります。
よろしくお願いします。

A 回答 (3件)

パッケージに含まれている場合はカレントディレクトリを保存している場所より1つ上の場所でコンパイルします。



今回はD:\java\testに保存してあり、パッケージ名はtestです。
ですから今回はカレントディレクトリをD:\javaの状態にしてください。
その状態で「javac test/Test1.java」とやってみてください。
Test2.javaも同様にやってみてください。
ファイルが保存してある、1つ上の状態にカレントを置いて
「javac パッケージ名/ファイル名」です。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
自分でもいろいろやってみたのですが,カレントディレクトリを
D:\java\testにしておいて javac -classpath .. Test2.java
とするとうまくいきました。これもなんだか頭がすっきりしません。
パッケージを使うのは今回初めてなのでまだまだ勉強しなくてはいけませんね。

お礼日時:2006/11/06 10:15

この辺を熟読するとよいです。



■型の検索
http://java.sun.com/j2se/1.5.0/ja/docs/ja/tooldo …
「ソースファイルをコンパイルする場合、
コマンド行で指定したソースファイルに型の定義が見つからないとき、
コンパイラは通常、その型に関する情報を必要とします」


■クラスの検索方法
http://java.sun.com/j2se/1.5.0/ja/docs/ja/tooldo …


■Java 起動ツールがユーザクラスを検索する方法
http://java.sun.com/j2se/1.5.0/ja/docs/ja/tooldo …
「クラス com.mypackage.MyClassの例による説明」のあたり
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
紹介していただいたページを参考にしっかり勉強してみます。

お礼日時:2006/11/07 17:09

Test2.java に以下2つのどちらかの修正を行うとうまくいくと思います。


1)Test1 の完全クラス名を import する
具体的には、
import text.Test1;
を最初に書く。

2)Test1 を完全クラス名で書く
Test1
と書いていたところを全て
test.Test1
に置き換える。

あと、コンパイルするとき、カレントディレクトリは「D:\java\」でやってみて下さい。
    • good
    • 0
この回答へのお礼

早速のご回答ありがとうございます。
1)の方法でコンパイルできました。
ただ,なぜカレントディレクトリをD:\javaにしなくてはいけないのかもう少し勉強してみます。

お礼日時:2006/11/06 10:09

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