【问题标题】:Java: Run Program without EclipseJava:在没有 Eclipse 的情况下运行程序
【发布时间】:2012-11-13 03:04:24
【问题描述】:

我制作了一个使用外部库和资源文件的游戏。现在我想在另一台 PC(使用 Ubuntu 操作系统)上对其进行测试,我尝试通过导出到 jar 文件来在不使用 eclipse 的情况下运行它,但它不起作用。这就是层次结构。有什么简单的方法吗?

编辑 当我将其导出为 Runnable(请注意,我仍试图在 Windows 而非 ubuntu) jar 文件中运行它并尝试运行它 java -jar gra.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(DelegatingMethodAcces
sorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:601)
        at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoa
der.java:58)
Caused by: java.lang.UnsatisfiedLinkError: no lwjgl in java.library.path
        at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1860)
        at java.lang.Runtime.loadLibrary0(Runtime.java:845)
        at java.lang.System.loadLibrary(System.java:1084)
        at org.lwjgl.Sys$1.run(Sys.java:73)
        at java.security.AccessController.doPrivileged(Native Method)
        at org.lwjgl.Sys.doLoadLibrary(Sys.java:66)
        at org.lwjgl.Sys.loadLibrary(Sys.java:95)
        at org.lwjgl.Sys.<clinit>(Sys.java:112)
        at org.lwjgl.opengl.Display.<clinit>(Display.java:132)
        at org.newdawn.slick.AppGameContainer$1.run(AppGameContainer.java:39)
        at java.security.AccessController.doPrivileged(Native Method)
        at org.newdawn.slick.AppGameContainer.<clinit>(AppGameContainer.java:36)

        at MainWindow.main(MainWindow.java:14)
        ... 5 more`

【问题讨论】:

  • 你试过用'java -jar '运行它吗?会发生什么?
  • 第一次我使用另一个选项导出并抛出异常。现在我得到no main manifest attribute, in game.jar。我将再次尝试导出以显示此异常。
  • 你试过把原生文件和jar文件放在同一个目录吗?
  • @Oskar 好吧,经过几次尝试,我尝试了这个,它成功了,我想这是最简单的方法:P

标签: java eclipse


【解决方案1】:

确保您是正确的getting your resource files,而不是在本地文件系统中引用它们。

确保将您的资源放入 JAR add them to your classpath

【讨论】:

    【解决方案2】:

    Caused by: java.lang.UnsatisfiedLinkError: no lwjgl in java.library.path

    lwjgl 未找到。它应该位于java.library.path 中列出的目录之一中。

    当您设置项目时,您肯定会使用 jwgl 的本机 dll 将目录添加到 java.library.path。 Eclipse 无法导出它。您必须创建一个添加 dll 的启动脚本(sh、bat)。

    看看这里的最后一步: http://www.lwjgl.org/wiki/index.php?title=Setting_Up_LWJGL_with_Eclipse

    【讨论】:

    • 我有点困惑,因为这个链接有关于设置我所做的整个项目的信息。在我的案例中,最后一步也已经完成。
    • 是的,你做得对。但是,如果您确实导出为 jar,则 eclipse 无法为您将 dll 添加到 java.library.path。你必须自己做。例如:java -Djava.library.path=my/dll/folder -jar my.jar。您也可以使用 System.loadLibrary() 并将 dll 放入您的 jar 中。
    【解决方案3】:

    你是如何包装罐子的?如果你只使用 eclipse,你应该使用 jarsplice。这可能会修复错误

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-10-26
      • 1970-01-01
      • 2018-04-01
      • 2012-04-29
      • 2012-07-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多