こんにちは、私はEclipseからアプリケーションを実行していますが、完璧に動作しますが、実行可能なjarとしてエクスポートすると実行されません。 私はそれは私がちょうど「サブフォルダにコピー必要なライブラリ」でそれをエクスポートした後、最初のerrrorがある2つのいずれかのエラーが与えCMDからそれを実行してみてください。私はサブを変更するとき.jarからアプリケーションを実行するとJavaのエラーが発生する
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)
を
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.
IslandDomination_libからフォルダの名前はちょうどそれが私に別のエラーを与えるはlibpackage 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
私のためにそれを実行するために別のJavaプログラムを使用して3210
2.
java.exe -cp "lib/j3dcore.jar;lib/j3dutils.jar;lib/vecmath.jar" -jar IslandDomination.jar
3必要なjarファイルがあるフォルダは、メインジャーと同じフォルダにあります
の隣に必要なdllファイルを置くことによって行われます使用する準備ができて。あなたはあなたの質問を更新して、あなたがあなたのアプリケーションをjarからどのように実行しているのか、あなたのjarの内部構造も表示できるようにすることができますか? – ManoDestra
JOGLがありません。クラスパスにあるはずです。Java3D 1.5(旧式)はJOGL 1.1.1(旧式)を使用しています。下の私の答えを見てください。 Java3DがJOGLパイプラインを使用しない場合は、j3dcore-ogl.dllが必要です。 Java3D 1.6.0を使用することは、あまり煩雑で安全です。 – gouessej