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
も試しました
実行したいメインクラスの名前を知っている場合は、-jar
コマンドライン引数なしで実行できます。
Java -classpath .;myjar.jar;lib/referenced-class.jar my.package.MainClass
Linuxを使用している場合は、「;」ではなく「:」を使用する必要があります。クラスパスで。
Java -jar
でjarファイルを実行している場合、-classpath
引数 無視されます 。次のように、jarのマニフェストファイルでクラスパスを設定する必要があります。
Class-Path: jar1-name jar2-name directory-name/jar3-name
Javaチュートリアルを参照してください: クラスをJARファイルのクラスパスに追加する 。
編集:マニフェストでクラスパスを設定しようとしたことがありますが、正しい構文を使用したことを確認していますか?示したように「:
」の後の「Class-Path
」をスキップすると、機能しません。
試してみる
Java -cp "your_jar.jar:lib/referenced_jar.jar" com.your.main.Main
Windowsを使用している場合は、;
の代わりに:
を使用する必要があります
eclipseで「Runnable jar」としてエクスポートを試みることができます。 「jar」としてエクスポートする場合も問題がありますが、「Runnable jar」としてエクスポートする場合は問題ありません。