通过eclipse导出runnable jar - 使用jogl native jars的项目

时间:2013-09-21 14:04:55

标签: eclipse jar native runnable jogl

我正在使用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下测试了这个^^

2 个答案:

答案 0 :(得分:1)

这是解决方案 http://forum.jogamp.org/exporting-runnable-jar-through-eclipse-td4030094.html#a4030096 它有效,但后来在一些版本中停止了。

答案 1 :(得分:0)

这应该适合你:

  1. 在eclipse中转到文件 - &gt;新 - &gt;项目 - &gt; Java项目
  2. 在名为“lib”
  3. 的项目根目录下创建一个新文件夹
  4. 将所有jar文件粘贴到要包含的lib文件夹中,作为此项目导出的jar的一部分。
  5. 右键单击该项目并选择 - &gt;属性(在botoom上)
  6. 在属性对话框中,从左侧选择“java build path”(从顶部开始的第4个)
  7. 在此视图中,选择“库”选项卡,然后单击“添加jar”,在对话框中导航到您的lib文件夹并切换所有罐子,然后单击“确定”。
  8. 不要将一个标签转到右边的“订单和导出”,然后选择刚刚添加的所有罐子,这样它们就会包含在项目的导出jar中。
  9. 单击“okay”关闭项目属性对话框,然后单击项目并选择“export”
  10. 展开“java”节点文件夹并选择“Jar”,然后单击“下一步”。
  11. 选择您的项目并确保取消选中所有其他项目。
  12. 在右上角的树状视图中展开您选择的项目,并确保选中“lib文件夹”,否则在构建期间不会导出它。
  13. 点击“选择导出目的地”
  14. 下方的“浏览”,为导出的jar创建文件路径
  15. 保留其他所有内容,选择“完成”并导航到您选择导出目标的文件系统,并看到您的jar正确无误。