2009-07-27 13 views
14

私は自分のマシン上のどこからでも実行できるようにしたいJavaプログラムを持っています。 Cygwinのコマンドプロンプトから実行したいと思います。私は、Javaプログラムを呼び出すスクリプトを作った。クラスパスにjavaプログラムの場所を追加し、javaプログラムのディレクトリからスクリプトを実行するとスクリプトが動作します。私は他のディレクトリから実行しようとすると、しかし、私が取得:別のディレクトリからJavaプログラムを実行するにはどうすればよいですか?

#!/bin/sh 
CWD=`dirname "$0"` 
java -cp "$CWD/classes;$CWD/lib/AJarFile.jar" commandprogram/CommandProgram 

以下にJavaの行を変更する:

java -cp "$CWD/classes;$CWD/classes/commandprogram;$CWD/lib/AJarFile.jar" CommandProgram 

が生成これは私のスクリプトです

java.lang.NoClassDefFoundError: commandprogram/CommandProgram 

同じ結果。

+0

あなたは...人々を見てどこに、より良いアイデアを与えるだろうこと、 –

+0

のスクリプトを投稿することができますが、Javaのcommandprogram/CommandProgram.classまたはJavaを実行する必要はありません-jar commandprogram/CommandProgram .jar? –

+0

is 'パス区切り記号セミコロン(;)の代わりにコロン(:)を使用しましたか? –

答えて

3

ちょうど私は考えることができるすべてについて試みた後、私はコマンドやのこぎりをエコーCygwinのパスとWindowsのパスが混在していることを確認してください。ソリューションはにスクリプトを変更しました:

#!/bin/sh 
CWD=`dirname "$0"` 
CWD=`cygpath -w "$CWD"` 
java -cp "$CWD/classes;$CWD/lib/AJarFile.jar" commandprogram/CommandProgram 

次にCWDに変更 "C:\プログラムファイル\を..." の代わりに "/ cygdriveの/ C /プログラム\ファイル/ ..."

私はこれまでにこの問題に遭遇し、cygpath -wソリューションで解決しましたが、スクリプトを少し変更して、パスの問題が戻ってきたことに気付かなかった。

20

は例をクラスパスにディレクトリを追加します。

java -classpath commandprogram CommandProgram 

または

java -classpath directory_to_program Program 
1

をあなたがいないスラッシュ、パッケージを分離するためにドットを使用する必要があります。

のjava -cp "$ CWD /クラスを; $ CWD/libに/ AJarFile.jar" commandprogram.CommandProgram

+0

/も動作します。このスクリプトは、スクリプトを使用してディレクトリにいるときに機能することに注意してください。 – Swoogan

-4

javaファイルを実行しているの通常の方法がJava/Binフォルダに保存することで、ファイル名を指定して実行cmd

C:\Program Files\Java\jdk1.7.0_05\bin> javac filename.java && java classname 

あなたは、このようなD:など別のディレクトリにファイルを保存する場合は、CMDで次のように使用することができますプロンプト:

D:\Project java> set path=%path%;C:Program Files\Java\jdk1.7.0_05\bin 
+7

JavaファイルやクラスファイルをJavaの 'bin'ディレクトリに保存することは、実際には非常に珍しく、避けるべきです。 JavaのbinディレクトリはJava独自のバイナリファイルと* nothing * elseのディレクトリです。 – Mac

関連する問題