73

Javaを使用してコマンドライン(Windows)からクラス(メインメソッド)を呼び出そうとしています。
クラスは他のクラス(他のjar)をインポートします。

メインプログラムがインポートするクラスから常に「クラスが見つからない例外」が発生します。

これが私が試したことです:

  • CLASSPATH環境を追加します。参照されたlibが存在するパスを持つvar(機能していません)

  • java -jar myjar.jarコマンドラインから""を呼び出すときに、これらすべての異なるパラメーターを試してみました: " -classpath lib/"、 " -classpath ./lib/"、 " -classpath lib"、 " -cp lib/*"、 " -cp lib/\*"、 " -classpath lib/referenced-class.jar"、 " -classpath ./lib/referenced-class.jar"(libは参照されるjarが存在する場所です)

  • 参照されているすべてのjarを、メインクラスが存在するjar内にパッケージ化してみました...

  • そして、それだけで、マニフェストファイル内のクラスを次のように指定しようとしました Class-path referenced-jar.jarClass-path lib/referenced-jar.jar

4

4 に答える 4

117

-jar実行したいメインクラスの名前がわかっている場合は、コマンドライン引数なしで実行できます。

java -classpath .;myjar.jar;lib/referenced-class.jar my.package.MainClass

Linuxを使用している場合は、「;」の代わりに「:」を使用する必要があります。クラスパスで。

于 2009-06-03T17:22:34.397 に答える
59

を使用してjarファイルを実行している場合java -jar-classpath引数は無視されます。次のように、jarのマニフェストファイルにクラスパスを設定する必要があります。

Class-Path: jar1-name jar2-name directory-name/jar3-name

Javaチュートリアル:JARファイルのクラスパスへのクラスの追加を参照してください。

編集:マニフェストでクラスパスを設定しようとしましたが、正しい構文を使用しましたか?:あなたが示したように「」の後に「 」をスキップするClass-Pathと、それは機能しません。

于 2009-06-03T17:19:32.527 に答える
13

試す

java -cp "your_jar.jar:lib/referenced_jar.jar" com.your.main.Main

Windowsを使用している場合は、;代わりにを使用する必要があります:

于 2009-06-03T17:22:17.827 に答える
3

Eclipseで「Runnablejar」としてエクスポートしてみることができます。「jar」としてエクスポートする場合にも問題がありますが、「Runnablejar」としてエクスポートする場合は問題はありません。

于 2009-06-03T17:20:37.627 に答える