我希望将一个小型Java应用程序编译成Windows可执行文件。
这个应用程序非常小,只有一个主类,但它使用了Apache POI。
当我进行编译时,只要将POI Jar放入类路径参数中,一切都正常。
但是,在链接时,GCJ无法解析POI包中的类引用。所有的信息都像这样:
undefined reference tp 'org::apache::poi:hssf:usermodel:HSSFWorkbook::class$'
我需要做什么才能链接我的应用程序?
我希望将一个小型Java应用程序编译成Windows可执行文件。
这个应用程序非常小,只有一个主类,但它使用了Apache POI。
当我进行编译时,只要将POI Jar放入类路径参数中,一切都正常。
但是,在链接时,GCJ无法解析POI包中的类引用。所有的信息都像这样:
undefined reference tp 'org::apache::poi:hssf:usermodel:HSSFWorkbook::class$'
我需要做什么才能链接我的应用程序?
您需要将导入的Jars编译为单独的.so
库。在编译库和编译代码时,确保提供Jars的--classpath
。
以下是一个示例,其中我正在编译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
#!/bin/sh
export LD_LIBRARY_PATH=./libs/:$LD_LIBRARY_PATH
exec ./MyJavaApp $*
-fPIC
。 - reve_etrange