Hello當我從Eclipse運行我的應用程序時它運行完美,但是當我將它作爲可運行jar導出時,它不會運行。 當我嘗試從CMD它給了我2個錯誤的一個第一errror是後,我只是用它導出「拷貝所需的庫到一個子文件夾」運行它:從.jar運行應用程序時發生Java 3d錯誤
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中運行你的應用程序,並顯示你的jar的內部結構? – ManoDestra
JOGL缺失,它應該在您的類路徑中,Java3D 1.5(過時)使用JOGL 1.1.1(已過時)。請看下面的答案。如果Java3D不使用JOGL管道,則需要j3dcore-ogl.dll。使用Java3D 1.6.0不太麻煩並且更安全。 – gouessej