web-dev-qa-db-ja.com

実行時に外部jarを含めるJava -jar

私の読書から、次のようにコマンドを実行すると:

Java -jar foo.jar

次に、メインクラスパスは無視され、クラスパスはマニフェストファイルから取得されます。

さらに、コマンドラインで宣言されたクラスパスも無視されます。だから:

Java -classpath /usr/local/jar/foobar.jar -jar foo.jar

/usr/local/jar/foobar.jarは無視されます。

最後に、マニフェストファイルには、jarファイル内の相対パスのみを含めることができることを読みました。

それでは、システムには存在するが実行中のjarファイルにはない外部jarへの絶対パスをどのように含めますか?

38
rouble

次のようなメインクラスの呼び出しを避けている理由はありますか

Java -cp /usr/local/jar/foobar.jar:/some/other/path.jar com.your.main.classname

このタイプの呼び出しにより、絶対パスと相対パスを混在させることができます。これをシェルスクリプトまたはバッチファイルに入れて、クラスパス全体を実際に入力したり覚えたりしなくても済むようにしてください。

40
matt b

Jarファイルがあるフォルダー内に、libなどのフォルダーを作成できます。

Manifest.MFの内容は次のとおりです。

Main-Class: com.mastergaurav.test.app.MainClass
Class-Path: lib/one.jar lib/two.jar

フォルダーの内容:

mainFolder/
   * lib/one.jar
   * lib/two.jar
   * my-main.jar

実行するには:

Java -jar my-main.jar
39
Gaurav Vaish