2011-07-19 93 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