我正在使用jogl原生坛(正如所解释的那样 - > http://jogamp.org/jogl/doc/userguide/#automatednativelibraryloading)并且我想通过eclipse输出jar,如所解释的 - > http://jogamp.org/wiki/index.php/JogAmp_JAR_File_Handling。 第一种方法是工作,但第二种方法不是,当然我希望将所有东西放在一个罐子里。
有没有人遇到过这个问题,能够分享他的解决方案吗?
我正在运行Windows 7 64位,java 64位,eclipse 4.3和最新的jogl libriary。P.S。 我也试过蚂蚁脚本:
<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),因为名称冲突(不同的平台)并且不使用任何第三方程序。
谢谢你的回答。
修改
我忘了提一下,我想用我的应用程序创建可运行的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下测试了这个^^
答案 0 :(得分:1)
这是解决方案 http://forum.jogamp.org/exporting-runnable-jar-through-eclipse-td4030094.html#a4030096 它有效,但后来在一些版本中停止了。
答案 1 :(得分:0)
这应该适合你: