私の読書から、次のようにコマンドを実行すると:
Java -jar foo.jar
次に、メインクラスパスは無視され、クラスパスはマニフェストファイルから取得されます。
さらに、コマンドラインで宣言されたクラスパスも無視されます。だから:
Java -classpath /usr/local/jar/foobar.jar -jar foo.jar
/usr/local/jar/foobar.jarは無視されます。
最後に、マニフェストファイルには、jarファイル内の相対パスのみを含めることができることを読みました。
それでは、システムには存在するが実行中のjarファイルにはない外部jarへの絶対パスをどのように含めますか?
次のようなメインクラスの呼び出しを避けている理由はありますか
Java -cp /usr/local/jar/foobar.jar:/some/other/path.jar com.your.main.classname
?
このタイプの呼び出しにより、絶対パスと相対パスを混在させることができます。これをシェルスクリプトまたはバッチファイルに入れて、クラスパス全体を実際に入力したり覚えたりしなくても済むようにしてください。
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