重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

Main.java Sub.java を作りました。

デフォルトの状態(CLASSPATHに何も設定していない状態)で javac Main.java とすると問題なくコンパイルできるのですが・・・しかし、

  export CLASSPATH=.:~/myclasses

などのように、CLASSPATH を設定すると、「シンボルを解釈処理出来ません」というコンパイルエラーが出ます。
なぜでしょうか?

CLASSPATH に カレントディレクトリを設定したにもかかわらず、Main.java Sub.javaがあるディレクトリでコンパイルしてもエラーが出ます。

ちなみに、

  export CLASSPATH=

のように、CLASSPATHを空にすると、またコンパイルが通るようになります。

A 回答 (3件)

「カレントディレクトリだけにしてもNG」となると、パッケージがらみかも。


Main や Sub クラスには、パッケージを指定していますか? (Main.java や Sub.java の最初に、「package foo.bar;」のようなパッケージ宣言を書いていますか?)

この回答への補足

ありがとうございます。助かります!

ご指摘いただいて、いろいろ試しているうちに、もっと問題点をわかりやすくできたので、とりあえずこの質問を閉じて、すぐに新しく質問を立て直します。

ありがとうございました!

補足日時:2006/08/17 17:30
    • good
    • 0

クラス同士の関係が不明瞭なのではっきりとは分かりませんが、たぶん、~/myclasses の中にあるソースファイル「も」コンパイルしようとしているからでしょう。



「シンボルを解釈処理出来ません」というコンパイルエラーはどのソースファイルに対して発生していますか?

この回答への補足

ありがとうございます!

>たぶん、~/myclasses の中にあるソースファイル「も」コンパイル

よく分からないのは、

export CLASSPATH=.

のように、カレントディレクトリだけにしてもNGなのです。

Main.java の中で、Sub.java のクラスのインスタンスを使っています。コンパイルエラーは、Main をコンパイルしているときで、Subのシンボルを解釈できない、と怒られます。

よろしくお願いいたします。

補足日時:2006/08/16 12:52
    • good
    • 0

export CLASSPATH=$CLASSPATH:.:.~/myclasses


にしてみたらどうですか。
$CLASSPATHがないと
もともとある.classにアクセスできないと思います。

この回答への補足

はじめの状態でも、

 echo $CLASSPATH

とすると空っぽだったのです。

自分で、

  export CLASSPATH=

のようにCLASSPATHを空にすると、コンパイルが通ります。何かがおかしいのでしょうか。
java のバージョンは 5.0 です。

補足日時:2006/08/16 10:05
    • good
    • 0

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