全部。我正在尝试制作一个包含库的捆绑 jar ,它使用 a作为本机支持。我已经将它压缩到 my.jar 中,当我从 cmd 运行它时,我必须这样输入:Sigar
.so
Sigar
java -jar -Djava.library.path=~/path/to/lib/contains/so my.jar
是的,这行得通,但是我想构建一个bundle jar,也就是说,将 .so 包含到 jar 中并在 jar 中使用它。所以我的问题是:如何设置 java.library.path 指向该 jar 中的 .so 文件。最后,我想让它像
java -jar my.jar (*)// hope to run it in this way
我的build.xml
样子:
27 <target name="jar" depends="compile">
28 <mkdir dir="${jar.dir}"/>
29 <jar destfile="${jar.dir}/${ant.project.name}.jar" basedir="${classes.dir}">
30 <zipgroupfileset dir="${lib.dir}" includes="*.jar"/>
31 <fileset dir="${lib.dir}" includes="*.so"/>
32 <fileset dir="${lib.dir}" includes="*.dylib"/>
33 <manifest>
34 <attribute name="Main-Class" value="${main-class}"/>
35 </manifest>
36 </jar>
37 </target>
到目前为止,当我以(*)
方式运行它时,我刚刚得到了 UnsatisfiedLink 异常。
另一个相关的问题是:如何将文件添加到 jar 中的特定位置。在上面的示例中,<fileset dir="${lib.dir}" includes="*.so"/>
将 *.so 放在 jar 的根目录中,如果我想更改它怎么办?
提前致谢!