【问题标题】:In Eclipse, my exported executable jar doesn't do anything ! (LWJGL)在 Eclipse 中,我导出的可执行 jar 不执行任何操作! (LWJGL)
【发布时间】:2012-03-07 08:57:55
【问题描述】:

这里是Java初学者。

我使用 LWJGL 库和 Slick 在 Eclipse(在 Windows 上)中制作了一个小型 Java 应用程序。然后,当我导出为可执行的 .jar 文件并运行生成的 .jar 时,它什么也不做。没有错误,没有任何东西 - 只是似乎没有运行。我正在关注本教程:http://www.cs.bsu.edu/homepages/pvg/misc/slick_eclipse_tutorial.php

这是我的 manifest.mf 文件的样子:

Manifest-Version: 1.0
Main-Class: SimpleTest
Class-Path: lib/lwjgl.jar lib/slick.jar

不使用 LWJGL 导出的应用程序很好。我做错了什么?

我尝试使用 JarSplice,但它不起作用,尽管我可能会误用它。有什么指点吗?

【问题讨论】:

  • 你把jar添加到构建路径了吗?
  • 你是如何运行它的?你运行java -cp ".:lwjgl.jar" -jar game.jar 之类的东西,它终止时没有输出?您是否告诉 Eclipse 生成 manfiest 文件并将其指向您的主类?
  • @Daniel - 我只需在 Windows 中双击即可运行生成的 .jar。我真的不熟悉使用命令行。在处理诸如此类的棘手问题时,这会降低失败率吗?是的,我确实引用了清单中的主类。

标签: java eclipse lwjgl slick2d


【解决方案1】:

我最好的选择是您错过了在 manifest 文件中引用您的 Main-class

查看this,它显示了如何正确设置您的manifest-文件。

玩得开心!

编辑:

Manifest-Version: 1.0 
Main-Class: SimpleTest 
Class-Path: lib/lwjgl.jar lib/slick.jar  
<-- new line without any content -->

编辑 2:

好的,我能够重现此行为。当我尝试通过控制台运行导出的 jar 时,出现以下异常:

Exception in thread "main" java.lang.reflect.InvocationTargetException
   ...
Caused by: java.lang.UnsatisfiedLinkError: no lwjgl in java.library.path
   ... 
    ... 5 more

在做了一些研究后,我发现几乎不可能将原生 dll 打包到可执行 jar 中。
为了澄清,我发现了三个选项:

  1. 通常只需在 Eclipse 中将您的 jar 导出为 Runnable JAR,然后将其放在包含本机 dll 的文件夹中(检查此内容,适用于我的教程设置)
  2. 在执行时将您的 dll 提取到一个临时目录中,如提到的 here
  3. 或者使用 One-Jar 项目,它可以让您使用本机库创建可运行的 jars

希望这能解决您的问题。干杯!

【讨论】:

  • 似乎不是问题。我的清单看起来像:Manifest-Version: 1.0 Main-Class: SimpleTest Class-Path: lib/lwjgl.jar lib/slick.jar 我还缺少什么吗?
  • 那些MANIFEST 文件非常脆弱/敏感。您能否确保文件末尾有一个返回/新行(请参阅我的编辑)。
  • 是的,试过了,我认为也不是问题。无论如何,我要放弃 Java,对于像我这样不想弄乱构建路径和清单文件的人来说,XNA 看起来更容易使用。不过谢谢!
  • 听到难过!不过,我会进行更深入的了解。如果我能解决问题,我会告诉你的!干杯。
【解决方案2】:

我在 eclipse 和 Slick 上遇到了类似的问题,这就是我发现的问题。 (取自 LWJGL wiki

我不断收到 java.lang.UnsatisfiedLinkError: no lwjgl in java.library.path

这是因为本机部分设置不正确。将 -Djava.library.path=path/to/dir 添加到命令行或作为 IDE 中的 VM 选项,以便 lwjgl 能够找到包含本机文件的文件夹。

简而言之,导出的 jar 缺少正确的本地人

现在,当编译为可运行的 jar 时,我假设您想要双击启动样式的应用程序,所以这不太可能。

您可以在启动后使用System.setProperty 设置java.library.path,或者将所需的natives 放在默认的库路径中。

我自己还没有找到最好的解决方案,但我希望这会有所帮助

【讨论】:

    【解决方案3】:

    尝试使用 Jar Splice http://ninjacave.com/jarsplice 您只需将所有 .jar 文件(主文件和库文件)和所有 DLL 提供给它。它可以创建一个有效的 .jar。它还可以生成可执行文件 (.exe),以及 Linux 和 Mac 等效项。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-19
      • 2014-12-28
      • 2016-08-15
      • 2017-05-13
      • 2011-03-15
      • 2012-02-08
      相关资源
      最近更新 更多