- PR -

初歩的な質問です。

投稿者投稿内容
未記入
会議室デビュー日: 2005/04/06
投稿数: 15
投稿日時: 2005-04-30 08:18
引用:

みきさんの書き込み (2005-04-30 08:00) より:
C:\work\java\com\aaa\bbb>javac TestA.java
TestA.java:2: シンボルを見つけられません。
シンボル: クラス TestB
場所 : com.aaa.bbb の パッケージ
import com.aaa.bbb.TestB;


TestBクラスが見つからない、って言ってます。
TestB.classはフォルダのどこに出来てますか?
Wata
ぬし
会議室デビュー日: 2003/05/17
投稿数: 279
投稿日時: 2005-04-30 11:40
コマンドを実行する場所が間違っています。

C:\work\java\com\aaa\bbb>javac TestA.java

ではなく、

C:\work\java\javac -classpath . com\aaa\bbb\TestA.java

としてみてください。
ちなみにTestAのコンパイル時に自動的にTestBも
コンパイルされるため、TestBを先にコンパイルしておく必要はありません。
ibara
常連さん
会議室デビュー日: 2002/11/15
投稿数: 26
投稿日時: 2005-04-30 12:10
引用:

みきさんの書き込み (2005-04-30 08:00) より:
失礼しました。こんな感じです↓
ちなみにクラスパスの設定は何もしてません。

C:\work\java\com\aaa\bbb>javac TestA.java
TestA.java:2: シンボルを見つけられません。
シンボル: クラス TestB
場所 : com.aaa.bbb の パッケージ
import com.aaa.bbb.TestB; ^


エラーを出している人の気持ちになってみましょう。
エラーを出しているのは誰?コンパイラ(javac)ですよね。
javacからみると、Testbなるもののソースか、クラスファイルがないとTestAはコンパイルできないので、TestB.javaか、TestB.classの場所を教えてあげないと、「どこやねん」ということになってしまうわけです。
で、「同じcom.aaa.bbbパッケージのソースファイルは同じディレクトリになければならない」なんていう決まりはどこにもない(実際、TestB.javaをcomにおこうと、com/aaaに置こうと問題なくコンパイルできます)ので、TestA.javaと同じディレクトリにTestB.javaを置いてもjavacは分かってくれません。
だから方法としては
1.TestB.javaの場所を教える
 1−1.sourcepathを通す
 1−2.TestB.javaも(*などで)同時にコンパイルする
2.TestB.classの場所を教える
 事前にTestBをコンパイルしておく必要あり。
 TestBもTestAを逆に使っている場合は不可能
となります。
たぶん。

javacなんてもう2年もたたいてないから自信なし・・・。

[ メッセージ編集済み 編集者: ibara 編集日時 2005-04-30 12:15 ]

[ メッセージ編集済み 編集者: ibara 編集日時 2005-04-30 12:18 ]

[ メッセージ編集済み 編集者: ibara 編集日時 2005-04-30 12:19 ]
unibon
ぬし
会議室デビュー日: 2002/08/22
投稿数: 1532
お住まい・勤務地: 美人谷        良回答(20pt)
投稿日時: 2005-04-30 12:55
unibon です。こんにちわ。

引用:

みきさんの書き込み (2005-04-30 08:00) より:
ちなみにクラスパスの設定は何もしてません。

C:\work\java\com\aaa\bbb>javac TestA.java
TestA.java:2: シンボルを見つけられません。


一番簡単な解決方法は、
C:\work\java>javac com\aaa\bbb\TestA.java
のような感じで C:\work\java をカレントフォルダにしてから javac を実行し、ソースファイルをそこからの相対パスで指定することです。なおクラスファイルはソースファイルと同じ場所に生成されますので多少ごちゃごちゃしますが、これが一番簡単で無難な構成です。

ちなみに javac の仕様は、オプションの -sourcepath, -classpath(あるいは CLASSPATH 環境変数), -d あたりが相互に絡み合い、これらをどう指定するかのバリエーションが多く、これらを細かく指定するのはかなり複雑です。
http://java.sun.com/j2se/1.4/ja/docs/ja/tooldocs/solaris/javac.html
Kissinger
ぬし
会議室デビュー日: 2002/04/30
投稿数: 428
お住まい・勤務地: 愛知県
投稿日時: 2005-04-30 14:53
コード:
javac -classpath ..\..\.. TestA.java

みき
会議室デビュー日: 2005/04/29
投稿数: 12
投稿日時: 2005-05-01 16:21
みなさんありがとうございました。
勉強になりました!

スキルアップ/キャリアアップ(JOB@IT)