引用的庫結構:(我沒能做到,在IDE運行良好) Java程序的工作原理IDE中,但在編譯(蝕)之後給出了一個java.lang.NoClassDefFoundError
堆棧跟蹤:
Exception in thread "main" java.lang.NoClassDefFoundError: org/newdawn/slick/SlickException
at com.gametest.game.GameLauncher.main(GameLauncher.java:61)
Caused by: java.lang.ClassNotFoundException: org.newdawn.slick.SlickException
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 1 more
基本上我使用slick和LWJGL來獲得音頻工作,在IDE內運行良好(構建路徑配置,選擇本地對象爲lwjgl),但是編譯並運行時,它崩潰並且在控制檯中給出上面的堆棧跟蹤。
我正在運行64位macosx,代碼在eclipse中編寫和編譯。使用圖書館:LWJGL,光滑(http://slick.ninjacave.com/)
從「終端」控制檯中使用跑:
java -cp ~/Desktop/FirstGame.jar com.gametest.game.GameLauncher
這似乎是一個常見的錯誤,但經過了大量的時間在網絡上搜索,我沒有遇到解決它的答案。
(編輯) 涉及到:ERROR!! AppGameContainer java.lang.ClassNotFoundException
所以基本上你所說的是,IDE「知道」在哪裏可以找到這些類,但它不會自動將它們包含在編譯後的產品中? 由於IDE不會自動繪製出奇怪的圖像,因此您需要將這些圖庫放入您的成品中。 它爲什麼不自動將這些庫添加到jar文件中? 是有原因嗎? – AgentM
是的,IDE可以找到依賴關係,因爲您可以爲項目配置類路徑並向其中添加jar。這是一個長達90年代的故事,每個初學者都與你的頭痛完全一樣:)問題在於,Java沒有任何「超級jar」規範來發布具有所有必需jar依賴項的檔案。因此,您必須使用外部jar或特殊構建工具的變通方法,這些工具嘗試通過不同方法解決此問題 – Cootri