在Eclipse中,我导出的可执行jar文件没有任何反应!(LWJGL)

4

我是一名Java初学者。

我在Windows上使用LWJGL库和Slick在Eclipse中制作了一个小型的Java应用程序。然后当我将其导出为可执行的.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包加入到构建路径了吗? - Th0rndike
1
你是怎么运行它的?你像这样运行 java -cp ".:lwjgl.jar" -jar game.jar,但是它没有输出就终止了吗?你告诉 Eclipse 生成清单文件并将其指向你的主类了吗? - Daniel Lubarov
@Daniel - 我只是在Windows上双击运行生成的.jar文件。我真的不熟悉使用命令行。在处理这种棘手的问题时,使用命令行会有更低的失败率吗?是的,我确实在清单中引用了主类。 - Orteil
3个回答

5

我猜你可能忘了在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文件到临时目录,如此处所述
  3. 或者使用 One-Jar 项目,它允许您创建带有本地库的可运行jar文件

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


似乎不是问题所在。我的清单文件看起来像这样:Manifest-Version: 1.0 Main-Class: SimpleTest Class-Path: lib/lwjgl.jar lib/slick.jar我还有什么遗漏吗? - Orteil
那些 MANIFEST 文件非常脆弱/敏感。你能确保文件末尾有一个回车/换行符吗(请参见我的编辑)? - SimonSez
是的,我试过了,我认为那也不是问题所在。无论如何,我放弃Java了,XNA看起来更适合像我这样不想折腾构建路径和清单文件的人。还是谢谢你! - Orteil
1
很遗憾听到这个消息!不过我会仔细查看。如果我能想出解决方案,我会告诉你的!干杯。 - SimonSez

3
我在使用eclipse和Slick时遇到了类似的问题,以下是我所发现的解决方法。(摘自LWJGL维基我一直收到java.lang.UnsatisfiedLinkError: no lwjgl in java.library.path错误提示 这是因为native部分没有正确设置。请在命令行或IDE中添加-Djava.library.path=path/to/dir,以便lwjgl能够找到包含native文件的文件夹。
简而言之,导出的jar缺少适当的native文件。
现在,在编译可运行的jar文件时,我假设您想要双击启动应用程序的样式,那不太可能。
您可以在启动后使用System.setProperty设置java.library.path,或将所需的native文件放在默认库路径中。
我自己还没有找到最佳解决方案,但希望这有所帮助。

0

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接