コマンドラインから実行可能なjarを作成しようとしています。 JARのメインクラスには、別のプレーンなJARファイルにパッケージされている依存関係があります。コマンドラインから実行可能なJAR(ÜberJAR)とJARの依存関係を束ねる
単一のJARファイルを出荷するために、依存関係JARを実行可能なJARとともにパッケージ化したいとします。
public class Hello {
public String getHello() {
return "Well hello there!!";
}
}
私はクラスファイルをパッケージ化しているhello.jarへの使用:
依存Hello.classファイルモックコードを持っている:私はこれまで試してみました何
は以下があります
jar cvfM hello.jar Hello.class
はhello.jar内容は以下のようになります。
私は、次の内容のマニフェストファイル manifest.txtを作成public class Main {
public static void main(String[] args) {
System.out.println(new Hello().getHello());
}
}
:0
hello.jar -+- Hello.class
今私はモックコードでメインクラス持っ
Main-Class: Main
Class-Path: hello.jar
を私は今作成実行可能なJARを使用します。
jar cvfm main.jar manifest.txt Main.class hello.jar
main.jar内容は以下のようになります。
使用して実行可能なJARを実行するmain.jar -+- Main.class
|
+- hello.jar
|
+- META-INF -+- MANIFEST.MF
:
java -jar main.jar
を私はこんにちはクラスの依存関係のためのクラスローダエラーが発生します。これは、クラスローダーがhello.jarと同じパスにあるmain.jarを検索するためです。だから私がのコピーを入れたらhello.jarと一緒にmain.jar私はそれを実行することができます。
main.jar hello.jarを内部で実行できるようにするには、何が必要ですか?
私はあなたが「このようにしているのはなぜですか?」と尋ねることを知っています。私は、pplがEclipse、Ant、Mavenまたはこれを行うための他のツールを主に使用していることを知っています。しかし、ちょうど私をユーモアしてください:)