我有以下文件:
A.jar(包含* .class文件)
B.jar(包含* .class文件)
Program.java(包含带有main函数的Program类,它依赖于A.jar和B.jar)
如何使用GCJ构建可执行文件 Program ?
答案 0 :(得分:1)
自从我玩Java以来已经有一段时间了,所以以下内容大部分都是我的头脑。
在linux中,通常由包装器脚本启动java程序。对于您的情况,此包装脚本可以是Program
,内容:
#!/bin/sh
java -cp A.jar:B.jar:/path/to/dir/where/Program.class/is/in Program
如果您只想拥有一个jar文件,那么您可以“解开”A.jar和B.jar并创建一个新的jar,比如包含来自A.jar,B.jar和所有类的Program.jar。你的Program.class,你创建一个清单文件,告诉你在执行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 ..
现在创建shell脚本包装器Program
:
#!/bin/sh
java -jar /path/to/Program.jar
使其可执行:
chmod +x Program
并运行它:
./Program
掌声如果有效,否则扔烂番茄!
答案 1 :(得分:0)
这对我有用:
gcj -c A.jar -o A.o
gcj -c B.jar -o B.o
gcj --main = Program --classpath = A.jar:B.jar -o Program A.o B.o Program.java