2011-07-05 67 views
7

我正在通過使用NetBeans中的LWJGL庫在Java中的基本遊戲「中的java.library.path沒有LWJGL」。當我運行.jar,我得到一個錯誤

我用lwjgl,lwjgl_util和jinput .jar創建了一個庫,並且將-Djava.library.path = C:\ LWJGL \ native \ windows添加到項目屬性中的「運行」類別。

當我在Netbeans中運行該文件時,它完全沒有問題地運行。但是當我通過雙擊文件運行.jar時,沒有任何東西彈出來(即使是瞬間的cmd錯誤窗口,據我所知)。當我運行通過命令行的文件,我得到:

C:\Users\200160765>java -jar "C:\Users\200160765\Documents\NetBeansProjects\Game 
\dist\Game.jar" 
Exception in thread "main" java.lang.UnsatisfiedLinkError: no lwjgl in java.libr 
ary.path 
     at java.lang.ClassLoader.loadLibrary(Unknown Source) 
     at java.lang.Runtime.loadLibrary0(Unknown Source) 
     at java.lang.System.loadLibrary(Unknown Source) 
     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 game.Draw.createWindow(Draw.java:198) 
     at game.Draw.init(Draw.java:214) 
     at game.Draw.run(Draw.java:56) 
     at game.Main.main(Main.java:9) 

我已經試過移動DLL的和周圍在同一目錄Game.jar的「LIB」文件夾中的.jar庫文件,動人他們到Game.jar相同的目錄,但我得到相同的錯誤。有人能幫助我,爲什麼我不能在netbeans之外工作嗎?

回答

9

你必須點JVM到本機文件使用命令行參數-Djava.library.path =「路徑/到/土人」位置。您可以使用批處理(.bat)文件來指定該文件併爲您啓動應用程序。

或者您可以使用一個工具,如JarSplice從所有的罐子,並在同一時間創建一個可執行的JAR文件包括它裏面的本機文件。它自動執行手動指定本機的棘手部分,並提供更好的最終用戶體驗。

要使用JarSplice只是在罈子裏選項卡中選擇您的game.jar,lwjgl.jar,lwjgl_util.jar和jinput.jar。然後在本地標籤中輸入* .dll,* .so,* .dylib和* .jnilib文件。在類選項卡上添加主類並創建單個可執行jar。

+1

我並不那麼熟悉.bat文件的語法,但我嘗試過這樣的路線:'@echo off java -jar Game.jar -Djava.library.path = C:\ LWJGL \ native \ windows'我仍然擁有同樣的錯誤。 –

+0

此外,脂肪罐的東西的作品,但我目前正在渲染塊的紋理不加載...但是,這可能是包裝成一個.jar的結果,而不是包裝成一個脂肪罐。 –

+0

你只需確保你沒有使用File或FileInputStream加載任何紋理,因爲這些紋理不能用於加載jar內的紋理。 – Gavin

3

LWJGL需要原有成分爲您的特定平臺在java.library.path。這些文件位於LWJGL分發的子目錄native中,並在Linux,OSX和Solaris上的.so以及用於Windows的.dll結束。

+0

我知道它需要的DLL的,但我不知道是怎麼Netbeans的發現DLL的罰款,但該.jar不,我怎麼告訴的.jar說。 –

0

我有這個問題,並使用jarSplice(http://ninjacave.com/jarsplice)

確保您刪除所有的預填當地人在罐子創建脂肪罐子之前固定它,否則會創建一個重複的錯誤

2

當我有這個問題,這是因爲我不小心把參數指定的位置的本地(-Djava.library.path = /本地/ /)字段中的'參數'下的運行選項面板的類別,而不是'vm選項'。 正如在這裏看到:http://s30.postimg.org/6f90akidt/Capture.png

0

我也得到了同樣的錯誤,然後才意識到,我命名爲「my_lib.zip」,而不是「my_lib.jar」的文件。也許它可以幫助某人。

相關問題