2011-07-19 61 views
3

美好的一天!无法启动.jar文件(使用LWJGL)

我创建了jar文件(使用Netbeans),我无法启动它。该项目使用lwjgl库。在我的IDE里面它运行良好。

我用下一个命令:

java -jar LWJGL_TimerExample.jar 

答案是:

Exception in thread "main" java.lang.UnsatisfiedLinkError: no lwjgl in java.library.path 
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1758) 
at java.lang.Runtime.loadLibrary0(Runtime.java:823) 
at java.lang.System.loadLibrary(System.java:1045) 
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:82) 
at org.lwjgl.Sys.<clinit>(Sys.java:99) 
at org.lwjgl.opengl.Display.<clinit>(Display.java:130) 
at Sourse.TimerExample.start(TimerExample.java:32) 
at lwjgl_timerexample.Main.main(Main.java:21) 

其他项目(如果没有这个库)正常工作。我该如何解决这个错误?

我的清单是:

Manifest-Version: 1.0 
Ant-Version: Apache Ant 1.8.1 
Created-By: 1.6.0_26-b03-384-10M3425 (Apple Inc.) 
Main-Class: lwjgl_timerexample.Main 
Class-Path: lib/jinput.jar lib/lwjgl.jar lib/lwjgl_util.jar 
X-COMMENT: Main-Class will be added automatically by build 
+1

解决此问题:'java.library.path中没有lwjgl' –

回答

4

它行不通你想现在做到这一点,因为你需要通过有沿侧本地文件的JAR并指向他们的“ -Djava.library.path'参数。

如果您只想使用一个jar并且想要避免命令行和本机文件的麻烦,请使用JarSplice工具。 JarSplice易于使用,并会自动为您处理本机文件。

1)简单地将您的项目(类和资源)导出到jar(更容易通过您的IDE)。

2)然后运行JarSplice,将所需的所有jar添加到jars选项卡(您的应用程序jar,lwjgl.jar和您正在使用的任何其他外部jar)。

3)然后在本机选项卡上添加所有本地文件(Windows * .dll,linux * .so,mac * .dylib & * .jnilib)。

4)在类选项卡上添加您的主类。然后创建你的jar。

然后,您可以通过双击它来运行此jar(或者如果您希望通过命令行使用'java -jar yourapp.jar')。

+0

对不起,这个问题很愚蠢......我有名为LWJGL_TimerExample的项目。它由2个软件包组成 - Sourse和lwjgl_timerexample。 Sourse包含TimerExample.java,lwjgl_timerexample包含Main.java。 主班的正确方法是什么? lwjgl_timerexample.Main? – ExiRe

+0

是的,packagename.MainClass,所以在你的情况下,如果Main是你试图运行的类,它将会是lwjgl_timerexample.Main。 – Gavin

+0

当我创建fat jar时,我收到了这个错误: 由于以下异常导致jar创建失败:重复条目:META-INF/MANIFEST.MF –

1

LWJGL wiki

LWJGL consists of two parts, a java part and a native code part. You must setup both of these parts properly in order for lwjgl to work. In order to setup the java part you must add lwjgl.jar to the classpath (as an external library jar). As for the native part (*.dll files on windows, *.so on linux, *.jnilib on mac, etc) you must tell java which folder the natives are located in for LWJGL to be able to find them (use the -Djava.library.path=path/to/dir vm parameter to do this).

看来你错过第二部分 - 有你的java.library.path本地库。

+0

是的,我的程序使用本机部分。我认为IDE会自动添加它。 – ExiRe

+0

对清单?我不是100%肯定的,但看看http://download.oracle.com/javase/6/docs/technotes/guides/jar/jar.html#JAR%20Manifest我没有看到一种方法在清单中指定库路径。当您将-Djava.library.path =/path/to/native/lib添加到命令行时它工作吗? –

+0

A已经尝试过:java -jar -Djava.library.path = -Djava.library.path =/Users/serg/LWJGL_2_7_1/lwjgl-2.7.1/native/macosx LWJGL_TimerExample。罐子 窗口出现了! – ExiRe