【问题标题】:How to run jar with JOGL app without -D key?如何在没有 -D 键的情况下使用 JOGL 应用程序运行 jar?
【发布时间】:2011-09-13 11:47:57
【问题描述】:

我尝试学习 Java,因为它是制作跨平台应用程序的最简单方法(python 也是,但我已经知道了)。我尝试用 JOGL 编写 hello world 程序。我已经编写了它,它在我的 Eclipse 和 NetBeans 中完美运行,但是当我尝试构建 jar 并运行它时,它说 java.library.path 中没有 JOGl。我尝试使用 -D 参数传递库路径并且它有效! 问题:有没有办法在没有任何额外参数的情况下运行它?只需双击。

谢谢。

【问题讨论】:

    标签: java jar jogl


    【解决方案1】:

    您应该在您的项目中创建一个清单文件:META-INF/MANIFEST.MF(可能您已经在您的项目树中拥有它)。 在那里你可以指定你的类路径,例如:

    Class-Path: lib/jogl.jar lib/other_lib.jar
    

    然后确保此文件进入您的 jar。欲了解更多信息http://download.oracle.com/javase/tutorial/deployment/jar/manifestindex.html

    【讨论】:

    • 试过这个:Manifest-Version: 1.0 \ Created-By: HiTECNOLOGYs \ Main-Class: game.ProjectEvolve \ Class-Path: lib/jogl.jar lib/gluegen-rt.jar lib/jinput .jar lib/joal.jar \ 不工作,说:“线程“主”java.lang.UnsatisfiedLinkError 中的异常:java.library.path 中没有 jogl”。什么鬼?
    • 所以我不知道,jogl 有点棘手,因为它有本地库。如果您只想双击运行它,您始终可以使用 java -D ... 命令执行 .bat/.sh 脚本
    • JOGL 并不棘手,任何 OpenGL 的 Java 绑定都需要一些本机代码才能访问 OpenGL。但是,在 JOGL 2.0 中,您只需将 jogl.all.jar 和gluegen-rt.jar 放入类路径中,并将包含本机库的 JAR 放入相同的目录中。然后,JOGL 2.0 自动加载它们,无需设置 Java 库路径。
    【解决方案2】:

    当需要向用户部署时,请部署应用程序。使用Java Web Start。这使得使用原生程序成为最终用户的“一键式”安装,它还可以在平台之间划分原生下载。

    有没有办法在没有任何额外参数的情况下运行它?只需双击。

    JWS 还提供桌面集成 - 在受支持的操作系统上提供桌面快捷方式和带有图标的菜单项。

    【讨论】:

    • 好答案。 “胖 JAR”方法有很多限制。 Java Webstart 好多了。
    【解决方案3】:

    您可以使用JarSplice 之类的工具轻松完成上述操作。只需按照 gui,它很容易做到。该应用程序将为您将本地人放入 jar 中,因此您只需双击 jar 即可运行您的 jogl 应用程序。

    【讨论】:

    • JarSplice 自 2014 年 1 月起受到 JogAmp API 的正式支持,但您发布答案时并非如此(2011 年 9 月)。
    【解决方案4】:

    在 JOGL 2.0 中不再需要设置 Java 库路径。您只需要设置类路径(jogl-all.jar 和gluegen-rt.jar 必须在类路径中)并将包含本机库的 JAR 放入您使用的相同目录(应用程序、小程序、Java Web开始等...)。然后,JOGL 2.0 会自动加载原生库。

    【讨论】:

      猜你喜欢
      • 2020-10-19
      • 1970-01-01
      • 1970-01-01
      • 2016-01-29
      • 1970-01-01
      • 2018-04-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-04
      相关资源
      最近更新 更多