我正在使用JNAerator生成一个单独的jar文件,我可以包含在一个项目中,并且我希望支持每个操作系统的动态库,并支持这个jar中的所有jar。
到目前为止,在处理JNAerator时,我已经能够使用如下命令包括一个动态库:
java -jar jnaerator.jar test.dll test.h [...] -mode StandaloneJar
但是,这只是包test.dll
,而我有用于多个系统(test_win32.dll
、test_win64.dll
、libtest_mac.dylib
、libtest_linux_x86.so
和libtest_linux_amd64.so
)的动态库,我希望它们都打包到一个jar中并得到它们的支持。
是否有任何方法可以通过一次运行JNAerator来实现“全在一体”的方法,或者必须为每个平台生成不同的jar文件?
发布于 2015-04-09 21:56:59
JNAerator有一个专门为此设计的-arch
选项,尽管the doc is currently terribly vague about it
java -jar jnaerator-0.12-shaded.jar \
-arch win32 win32/test.dll \
-arch win64 win64/test.dll \
-arch darwin_universal mac/libtest.dylib \
-arch linux_x86 linux_x86/libtest.so \
-arch linux_x64 linux_amd64/libtest.so \
test.h \
-mode StandaloneJar \
-jar test.jar
这将按照BridJ所期望的格式捆绑库(请参阅its wiki page about embedded binaries):
unzip -l test.jar
给出:
...
0 04-09-15 22:45 lib/win32/test.dll
0 04-09-15 22:45 lib/win64/test.dll
0 04-09-15 22:45 lib/darwin_universal/libtest.dylib
0 04-09-15 22:45 lib/linux_x86/libtest.so
0 04-09-15 22:45 lib/linux_x64/libtest.so
目前预计每个平台的库名都是lib<name>.(so|dylib)
或<name>.dll
,尽管这可以很容易地修复if you ask。
(注:我是“BridJ &JNAerator”的作者)
https://stackoverflow.com/questions/29530261
复制相似问题