1

我有以下文件:

A.jar(包含*.class文件)
B.jar(包含*.class文件)
Program.java(包含带有main函数的Program类,依赖A.jar和B.jar)

如何使用 GCJ构建可执行文件程序?

4

2 回答 2

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,例如 Program.jar,其中包含 A.jar、B.jar 和您的 Program 中的所有类。类,然后您创建一个小清单文件,该文件告诉您在执行 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

如果有效,请鼓掌,否则请扔烂番茄!

于 2011-12-14T14:15:10.390 回答
0

这对我有用:

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

于 2011-12-15T12:11:37.950 回答