所有。我正在尝试制作包含Sigar
库的捆绑jar ,该库使用.so
作为原生支持。我已将Sigar
压缩到my.jar中,当我从cmd运行它时,我必须输入如下内容:
java -jar -Djava.library.path=~/path/to/lib/contains/so my.jar
是的,这是有效的,但我想构建一个捆绑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的根目录中,如果我想更改它会怎样?
提前致谢!