私は次のファイルを持っています:
A.jar(* .classファイル
を含む)B.jar(* .classファイルを含む)
Program.java(A.jarおよびB.jarに依存するmain関数を持つプログラムクラスを含む)
GCJを使用して実行可能ファイルプログラムを作成するにはどうすればよいですか?
私は次のファイルを持っています:
A.jar(* .classファイル
を含む)B.jar(* .classファイルを含む)
Program.java(A.jarおよびB.jarに依存するmain関数を持つプログラムクラスを含む)
GCJを使用して実行可能ファイルプログラムを作成するにはどうすればよいですか?
Javaで遊んでからしばらく経ちましたので、以下はほとんど頭から離れています。
Linuxでは、通常、Javaプログラムはラッパースクリプトによって起動されます。あなたの場合、このラッパースクリプトはProgram
、コンテンツにすることができます。
#!/bin/sh
java -cp A.jar:B.jar:/path/to/dir/where/Program.class/is/in Program
jarファイルを1つだけにしたい場合は、A.jarとB.jarを「解凍」して、A.jar、B.jar、およびプログラムのすべてのクラスを含むProgram.jarなどの新しいjarを作成できます。クラスを作成し、jarファイル(この場合はProgram.class)を実行するときに実行するクラスを指示する小さなマニフェストファイルを作成します。
マニフェストファイルの内容(manifest.txtと呼びましょう):
-----8<------
Main-Class: Program
----->8------
「Main-Class:Program」行の後の空白行に注意してください-これは必要です。
したがって、シングルを作成しますProgram.jar
。
gcj --classpath A.jar:B.jar Program.java
mkdir tmp
cd tmp
jar xf ../A.jar
jar xf ../B.jar
cp ../Program.class .
jar cmf ../manifest.txt ../Program.jar .
cd ..
次に、シェルスクリプトラッパーを作成しますProgram
。
#!/bin/sh
java -jar /path/to/Program.jar
実行可能にする:
chmod +x Program
そしてそれを実行します:
./Program
それがうまくいくなら拍手、そうでなければ腐ったトマトを投げてください!
これは私のために働きます:
gcj -c A.jar -o Ao
gcj -c B.jar -o Bo
gcj --main = Program --classpath = A.jar:B.jar -o Program Ao Bo Program.java