[英]Java 3d error when running application from .jar
您好,當我從 Eclipse 運行我的應用程序時,它運行得很好,但是當我將它導出為可運行的 jar 時,它無法運行。 當我嘗試從 cmd 運行它時,它給了我 2 個錯誤之一,第一個錯誤是在我使用“將所需的庫復制到子文件夾中”導出它之后:
Exception in thread "main" java.lang.UnsatisfiedLinkError: no j3dcore-ogl in java.library.path
at java.lang.ClassLoader.loadLibrary(Unknown Source)
at java.lang.Runtime.loadLibrary0(Unknown Source)
at java.lang.System.loadLibrary(Unknown Source)
at javax.media.j3d.NativePipeline$1.run(NativePipeline.java:189)
at java.security.AccessController.doPrivileged(Native Method)
at javax.media.j3d.NativePipeline.loadLibrary(NativePipeline.java:180)
at javax.media.j3d.NativePipeline.loadLibraries(NativePipeline.java:137)
at javax.media.j3d.MasterControl.loadLibraries(MasterControl.java:948)
at javax.media.j3d.VirtualUniverse.<clinit>(VirtualUniverse.java:280)
at javax.media.j3d.Canvas3D.<clinit>(Canvas3D.java:3862)
at Main.Game.<init>(Game.java:39)
at Main.Main.main(Main.java:6)
當我將子文件夾的名稱從 IslandDomination_lib 更改為 lib 時,它給了我另一個錯誤:
Exception in thread "main" java.lang.NoClassDefFoundError: javax/media/j3d/Canvas3D
at Main.Main.main(Main.java:6)
Caused by: java.lang.ClassNotFoundException: javax.media.j3d.Canvas3D
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 1 more
我試過幾種方式運行它:
1.
java.exe -jar IslandDomination.jar
2.
java.exe -cp "lib/j3dcore.jar;lib/j3dutils.jar;lib/vecmath.jar" -jar IslandDomination.jar
3.使用另一個java程序為我運行它:
package main;
import java.io.File;
import java.io.IOException;
public class Main {
public static void main(String[] args) throws IOException, InterruptedException{
ProcessBuilder pb = new ProcessBuilder(System.getProperty("java.home")+"\\bin\\java.exe", "-cp" , "\"lib/j3dcore.jar;lib/j3dutils.jar;lib/vecmath.jar\"" , "-jar" , "IslandDomination.jar");
pb.directory(new File("./"));
Process p = pb.start();
p.waitFor();
}
}
我的 jar 的內部結構由 4 個文件夾組成:
J3DBool
Main
Maths
META-INF
包含所需 jar 的文件夾與主 jar 位於同一文件夾中
您使用的是完全過時的 Java3D 版本,很難將其捆綁到任何軟件中,因為您必須以某種方式設置 Java 庫路徑,並且必須同時捆綁 Java 庫和本機庫。 而是使用 Java3D 1.6.0 pre 12 重建您的項目,它更容易使用,因為該版本依賴於使用自動本地庫加載的 JOGL 2,並且所有內容都打包為 JAR,不再需要修改庫路徑,只需照顧好類路徑。
請按照我的教程,尤其是最后一節提供(很多)更多信息。
最后,不能保證您使用的過時版本可以在任何最新的操作系統上運行。 如果它有效,你會很幸運; 如果沒有,沒有人會修復它。
我認為在類路徑中找不到所需的庫文件(jar 文件)。
您需要在類路徑中設置庫文件。
設置類路徑的步驟:-
我的電腦->屬性->高級系統設置->環境變量
如果找到,請在用戶變量區域或系統變量中找到“類路徑”,然后編輯並放置所有 jar 文件鏈接。 如果未找到,則創建新的(單擊新的)並將所有 jar 鏈接放在那里並嘗試運行您的應用程序
我發現了如何解決我的問題,只需將所需的 dll 文件放在可執行 jar 文件旁邊即可完成
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.