2016-07-20 22 views
1

私はクラスパスを出力する簡単なJavaプログラムを持っています。次のようにフォルダ構造は次のとおりです。CygwinでJavaプログラムを実行中 - クラスパスが見つかりません

[~/tmp/bin]# ls 
launcher/ PrintClasspath.class* 

、同じクラスのコピー1つのより下のレベルで

[~/tmp/bin/launcher]# ls 
PrintClasspath.class* 

私は~/tmpディレクトリにジャンプアップし、私の~/tmp/binディレクトリにPrintClasspathを実行すると、私は。クラスパスとして./binと書いてあります。

[~/tmp]# java -cp "./bin" PrintClasspath 
/C:/Cygwin/home/user/tmp/bin/ 

または私は次のようにクラスパスを編集した場合、私は私が~/tmp/bin/launcherディレクトリ内のネストされた同じファイルを実行することができます

[~/tmp]# java -cp "./bin/launcher" PrintClasspath 
/C:/Cygwin/home/user/tmp/bin/launcher/ 

をしかし、私は私の~/tmpディレクトリに座るしようとすると、実行しよう私のクラスパスとして./bin~/tmp/bin/launcherディレクトリに私のクラスとクラスは以下を経由して配置されている場所の資格:

[~/tmp]# java -cp "./bin" launcher.PrintClasspath 
Error: Could not find or load main class launcher.PrintClasspath 

それは失敗します。私は私のLinuxボックスで同じテストを実行し、クラスパスをクラスパスに与えた後にクラスがサブディレクトリにある場所を修飾して、複数のディレクトリをうまく動作させました。

私はもともとこれがWindows/Cygwinのニュアンスであると想定していましたが、Windowsのコマンドプロンプトと同じ結果で同じ演習を試みました。私はここで欠けています。私は、Windows Javaプログラムを完全なクラスパスで実行するだけでいいですか?

答えて

1

解決済み:Windows版Javaを使用してCygwinでクラスパスを設定する場合は、-wpオプションを使用してcygpathユーティリティを使用して、UNIXパスをWindowsパスに変換する必要があります。

[~/tmp]# java -cp `cygpath -wp ./bin` launcher.PrintClasspath 
/C:/Cygwin/home/user/tmp/bin/ 

thisを介して)

関連する問題