- ベストアンサー
CLASSPATHを設定→エラー!!??
Main.java Sub.java を作りました。 デフォルトの状態(CLASSPATHに何も設定していない状態)で javac Main.java とすると問題なくコンパイルできるのですが・・・しかし、 export CLASSPATH=.:~/myclasses などのように、CLASSPATH を設定すると、「シンボルを解釈処理出来ません」というコンパイルエラーが出ます。 なぜでしょうか? CLASSPATH に カレントディレクトリを設定したにもかかわらず、Main.java Sub.javaがあるディレクトリでコンパイルしてもエラーが出ます。 ちなみに、 export CLASSPATH= のように、CLASSPATHを空にすると、またコンパイルが通るようになります。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
「カレントディレクトリだけにしてもNG」となると、パッケージがらみかも。 Main や Sub クラスには、パッケージを指定していますか? (Main.java や Sub.java の最初に、「package foo.bar;」のようなパッケージ宣言を書いていますか?)
その他の回答 (2)
- UKY
- ベストアンサー率50% (604/1207)
クラス同士の関係が不明瞭なのではっきりとは分かりませんが、たぶん、~/myclasses の中にあるソースファイル「も」コンパイルしようとしているからでしょう。 「シンボルを解釈処理出来ません」というコンパイルエラーはどのソースファイルに対して発生していますか?
補足
ありがとうございます! >たぶん、~/myclasses の中にあるソースファイル「も」コンパイル よく分からないのは、 export CLASSPATH=. のように、カレントディレクトリだけにしてもNGなのです。 Main.java の中で、Sub.java のクラスのインスタンスを使っています。コンパイルエラーは、Main をコンパイルしているときで、Subのシンボルを解釈できない、と怒られます。 よろしくお願いいたします。
- kabutorikikori
- ベストアンサー率50% (4/8)
export CLASSPATH=$CLASSPATH:.:.~/myclasses にしてみたらどうですか。 $CLASSPATHがないと もともとある.classにアクセスできないと思います。
補足
はじめの状態でも、 echo $CLASSPATH とすると空っぽだったのです。 自分で、 export CLASSPATH= のようにCLASSPATHを空にすると、コンパイルが通ります。何かがおかしいのでしょうか。 java のバージョンは 5.0 です。
補足
ありがとうございます。助かります! ご指摘いただいて、いろいろ試しているうちに、もっと問題点をわかりやすくできたので、とりあえずこの質問を閉じて、すぐに新しく質問を立て直します。 ありがとうございました!