我想编一个小的Java应用程序的Windows可执行文件。
该应用程序是非常小的,只有一个主类,但它使用的Apache POI。
当我编译它,一切工作正常,只要我把POI罐到类路径参数。
但是,当涉及到链接,GCJ无法解析引用的类的POI包。 这些消息都是这样:
undefined reference tp 'org::apache::poi:hssf:usermodel:HSSFWorkbook::class$'
我有什么才能链接到我的应用程序呢?
我想编一个小的Java应用程序的Windows可执行文件。
该应用程序是非常小的,只有一个主类,但它使用的Apache POI。
当我编译它,一切工作正常,只要我把POI罐到类路径参数。
但是,当涉及到链接,GCJ无法解析引用的类的POI包。 这些消息都是这样:
undefined reference tp 'org::apache::poi:hssf:usermodel:HSSFWorkbook::class$'
我有什么才能链接到我的应用程序呢?
你必须导入罐编译成.so
库分开。 确保提供的罐子在--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
最后,通过一个shell脚本引用库路径执行你的可执行文件。 例如:
#!/bin/sh
export LD_LIBRARY_PATH=./libs/:$LD_LIBRARY_PATH
exec ./MyJavaApp $*