簡體   English   中英

當我運行.jar 時,我收到“java.library.path 中沒有 lwjgl”錯誤

[英]When I run the .jar, I get a “No lwjgl in java.library.path” error

我正在通過 Netbeans 使用 LWJGL 庫在 Java 中制作一個基本游戲。

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

當我在 Netbeans 中運行文件時,它運行完美,沒有問題。 但是,當我通過雙擊文件運行.jar 時,什么都沒有彈出(據我所知,即使是暫時的 cmd 錯誤 window 也沒有)。 當我通過命令行運行文件時,我得到:

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 和.jar 庫文件移動到與 Game.jar 相同目錄中的“lib”文件夾中,並將它們移動到與 Game.Z68995FCBF432492D15484DAC04A 相同的目錄中。 有人可以幫我解釋為什么我似乎無法在 netbeans 之外工作嗎?

您必須使用命令行參數 -Djava.library.path="path/to/natives" 將 jvm 指向本機文件所在的位置。 您可以使用批處理 (.bat) 文件來指定它並為您啟動應用程序。

或者,您可以使用 JarSplice 之類的工具從所有jars中創建單個可執行 jar 文件,同時在其中包含您的本機文件。 它自動化了手動指定本機的棘手部分,並提供了更好的最終用戶體驗。

To use JarSplice just select your game.jar, lwjgl.jar, lwjgl_util.jar, and jinput.jar in the jars tab. 然后是 natives 選項卡中的所有 *.dll、*.so、*.dylib 和 *.jnilib 文件。 在 class 選項卡上添加主 class 並創建單個可執行文件 jar。

LWJGL 需要特定平台的本機組件位於java.library.path中。 它們位於native發行版的子目錄中,在 Linux、OSX 和 Solaris 上以.so結尾,在.dll上以 .dll 結尾。

當我遇到這個問題時,是因為我不小心將參數指定本地人的位置(-Djava.library.path=/native/)放在選項面板的運行類別下名為“參數”的字段中,而不是'vm 選項'。 如此處所示: http://s30.postimg.org/6f90akidt/Capture.png

我遇到了這個問題並使用 jarSplice (http://ninjacave.com/jarsplice) 修復了它

確保在創建胖 jar 之前刪除 jar 中所有預先放置的原生對象,否則會產生重復錯誤

我也遇到了同樣的錯誤,然后意識到我將文件命名為“my_lib.zip”而不是“my_lib.jar”。 也許它可以幫助某人。

另一件事要檢查:

  • 如果您使用的是 32 位 JVM,則需要 32 位庫。 (即使在 64 位操作系統上)
  • 如果您使用的是 64 位 JVM,則需要 64 位庫。

And yet another way to do this is with Java Web Start (jnlp): http://lwjgl.org/forum/index.php?topic=3763.0

這使得在某些方面共享您的項目更容易。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM