我正在使用 jogl 原生 jars(如解释 -> http://jogamp.org/jogl/doc/userguide/#automatednativelibraryloading),我想通过 eclipse 导出 jar,如解释 -> http://jogamp.org/ wiki/index.php/JogAmp_JAR_File_Handling。第一种方法有效,但第二种方法无效,当然我想把所有东西都放在一个罐子里。
有没有人遇到过这个问题并且能够分享他的解决方案?
我正在运行 windows 7 64bit、java 64bit、eclipse 4.3 和最新的 jogl 库。
ps 我也试过蚂蚁脚本:
<jar destfile="${dist.dir}/${app.name}-${app.version}.jar">
<manifest>
<attribute name="Main-Class" value="org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader"/>
<attribute name="Rsrc-Main-Class" value="com.home.pso.Uruchom"/>
<attribute name="Class-Path" value="."/>
<attribute name="Rsrc-Class-Path" value="./ gluegen-rt.jar gluegen-rt-natives-windows-amd64.jar jogl-all.jar jogl-all-natives-windows-amd64.jar"/>
</manifest>
<zipfileset src="jar-in-jar-loader.zip"/>
<fileset dir="${bin.dir}"/>
<zipfileset dir="${lib.dir}" includes="*.jar"/>
</jar>
ps2 我想做最简单的方法,最好不要使用本机库(.dll,.so),因为名称冲突(不同的平台)并且不使用任何 3-rd 方程序。
谢谢你的回答。
编辑:
我忘了提,我想用我的应用程序创建可运行的 jar。
运行 jar 后出现以下错误,这是我用第二种方法创建的:
ezekiel@vm-ubuntu:~/Pulpit/workspace/pso/lib$
/home/ezekiel/Pulpit/jdk1.7.0_40/jre/bin/java' -jar '/home/ezekiel/Pulpit/pso-1.0.jar'
Catched URISyntaxException: Expected scheme-specific part at index 5: rsrc:, while
TempJarCache.bootstrapNativeLib() of null (null + gluegen-rt-natives-linux-amd64.jar)
Exception in thread "main" java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:58)
Caused by: java.lang.UnsatisfiedLinkError: Can't load library: /home/ezekiel/Pulpit/workspace/pso/lib/libgluegen-rt.so
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1846)
at java.lang.Runtime.load0(Runtime.java:795)
at java.lang.System.load(System.java:1061)
at com.jogamp.common.jvm.JNILibLoaderBase.loadLibraryInternal(JNILibLoaderBase.java:468)
at com.jogamp.common.jvm.JNILibLoaderBase.access$000(JNILibLoaderBase.java:63)
at com.jogamp.common.jvm.JNILibLoaderBase$DefaultAction.loadLibrary(JNILibLoaderBase.java:94)
at com.jogamp.common.jvm.JNILibLoaderBase.loadLibrary(JNILibLoaderBase.java:332)
at com.jogamp.common.os.DynamicLibraryBundle$GlueJNILibLoader.loadLibrary(DynamicLibraryBundle.java:390)
at com.jogamp.common.os.Platform$1.run(Platform.java:210)
at java.security.AccessController.doPrivileged(Native Method)
at com.jogamp.common.os.Platform.<clinit>(Platform.java:173)
at javax.media.opengl.GLProfile.<clinit>(GLProfile.java:82)
at javax.media.opengl.awt.GLCanvas.<init>(GLCanvas.java:247)
at javax.media.opengl.awt.GLCanvas.<init>(GLCanvas.java:197)
at javax.media.opengl.awt.GLCanvas.<init>(GLCanvas.java:187)
at com.home.pso.Uruchom.main(Uruchom.java:74)
... 5 more
我也在linux下测试过这个^^