- 締切済み
CLASSPATHに二つのディレクトリ設定するとエラーが出る?
CLASSPATHを二つのディレクトリを設定するとエラーが出てしまいます。 理由が分からないので、お願いします! 【状況】 同じディレクトリに 次の2つのファイルがあります。 --- Main.java --- public class Main { public static void main(String[] args) { Sub x = new Sub(); x.test(); } } --- Sub.java --- public class Sub { public void test() { System.out.println("Sub !"); } } 【再現手順】 (1) デフォルトの CLASSPATH は空です。この状態でコンパイルしても問題ありません。 $ echo $CLASSPATH $ javac Main.java $ java Main Sub ! (2) CLASSPATH に . を設定します。この状態でコンパイルしてもやはり問題ありません。 (3) ところが、CLASSPATH にカレントディレクトリ「 . 」ともう一つのディレクトリ(何もファイルがありません)を設定してコンパイルすると、次のようにエラーが出てしまいます。 $ export CLASSPATH=.:tmp $ javac Main.java Main.java:3: シンボルを見つけられません。 シンボル: クラス Sub 場所 : Main の クラス Sub x = new Sub(); ^ ---------------- とりあえず、カレントディレクトリはCLASSPATHに指定してあるので、Sub.classは見つかるはずだと思うのですが、なぜエラーが出るのでしょうか? よろしくお願いします!!
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- liwet
- ベストアンサー率72% (18/25)
クラスパスに設定しているパスが、正しくないからだと思います。 tmpはカレントディレクトリの下にあるのですよね? だとすると、 export CLASSPATH=.:./tmp とするか、tmpの絶対パスを指定して、 export CLASSPATH=.:/foo/bar/tmp というような感じにすれば良いと思います。 ちなみに、区切り文字は、Windowsではセミコロン(;)ですが、UNIXではコロン(:)です。 http://java.sun.com/j2se/1.5.0/ja/docs/ja/tooldocs/windows/classpath.html http://java.sun.com/j2se/1.5.0/ja/docs/ja/tooldocs/solaris/classpath.html
- Chronos198
- ベストアンサー率30% (105/349)
CLASSPATHの区切りが「:」(コロン)になっていませんか? 正しい区切り記号は「;」(セミコロン)です。
補足
ダブルコーテーションをつけて export CLASSPATH=".;tmp" としたらうまく行きました。 つまり、java for win は ; を要求するのですが、cygwin の bash が ; を「コマンドの終わり」と認識してしまうところからきたエラーのようです。