web-dev-qa-db-ja.com

Java:コマンドラインからjarファイルをインポートする方法

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.jarそして、Class-path lib/referenced-jar.jarも試しました

73
mrmuggles

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

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

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

117
Adam Paynter

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

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

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

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

59
Michael Myers

試してみる

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

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

13
artemb

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

3
cupakob