jarマニフェストを設定して、そのフォルダの隣にあるすべてのライブラリ(jar)をロードしようとしています。フォルダ内のすべてのjarを使用するjarマニフェストを持つことは可能ですか?
マニフェストは次のようになります。
Manifest-Version: 1.0
Class-Path: libs/
Main-Class: path.to.my.class.Main
次のようにレイアウトは次のとおりです。
- MyJar.jar
- libs/
-----lib1.jar
-----lib2.jar
そして、私はこのように実行しようとしています:
java -jar MyJar.jar
そして私が手フォルダ内のjar内のクラスに関するNoClassDefinitionエラー。
好奇心が強い人にとっては、このフォルダにはクラス読み込み時に処理されるオプションのjarが含まれている場合があります。それは私がハードコードされたものや自動生成されたものを使用することはできません。
更新 マニフェスト自体からは現在のところ問題が解決されていません。その答えは、瓶を抜き出す必要なしに実用的な唯一のものでしたが、それも機能します。
サマリーとして答えはノーですが、特定できない依存関係がある場合はマニフェストファイルだけからはできません。
AFIK JARのクラスパスは 'JAR'ファイルのルートから始まります。 'Spring Boot'や' OSGI'コンテナのように動的にロードしない限り、クラスやJARをサブディレクトリに置くことはできません。 – 11thdimension
それができます、あなたはJAR名でパスを指定する必要があります。このリンクをチェックしてくださいhttp://todayguesswhat.blogspot.com/2011/03/jar-manifestmf-class-path-referencing.html?_sm_au_=ivVTSRf571T1SvZP – 11thdimension
私はそのリンクを早期に実行しましたが、上記の私のマニフェストはそれに基づいていますが、仕事はありません。クラスパスに定義されているフォルダ内のファイルのみが検索されます。フォルダだけでは動作しないようです。 (すなわちlibs /または./libs/) – javydreamercsw