6

我想将一个小型 Java 应用程序编译为 Windows 可执行文件。

该应用程序非常小,只有一个主类,但它使用 Apache POI。

当我编译它时,一切正常,只要我将 POI Jar 放入类路径参数中。

但是当涉及到链接时,GCJ 无法解析 POI 包中的类的引用。消息都是这样的:

undefined reference tp 'org::apache::poi:hssf:usermodel:HSSFWorkbook::class$'

我必须做什么才能链接我的应用程序?

4

1 回答 1

6

您必须将导入的 Jars 分别编译到.so库中。确保在--classpath编译库和编译代码时都提供 .jar 文件。

一个例子,我正在编译 GNU 加密库:

gcj --classpath=source/:libs/gnu-crypto.jar -fjni -c libs/gnu-crypto.jar -o libs/gnu-crypto.o 
gcj -shared -fPIC -o libs/libgnu-crypto.o libs/gnu-crypto.o -o libs/libgnu-crypto.so 

最后,通过引用库路径的 shell 脚本执行您的可执行文件。例如:

#!/bin/sh
export LD_LIBRARY_PATH=./libs/:$LD_LIBRARY_PATH
exec ./MyJavaApp $*
于 2010-01-20T15:47:20.000 回答