Привет, когда я запускаю свое приложение из Eclipse, он работает отлично, но когда я экспортирую его как исполняемый банку, он не запускается. Когда я пытаюсь запустить его из CMD дает мне один из 2-х ошибок первого errror после я просто экспортировать его с «копией необходимых библиотек в подпапке»:Ошибка Java 3d при запуске приложения из .jar
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 просто импровизировать это дает мне еще одну ошибку:
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();
}
}
Внутренняя структура моей баночке состоит из 4-х папок:
J3DBool
Main
Maths
META-INF
Папка с необходимыми банками находится в той же папке, что и основная банка
Просто обновите ваш Путь к классам выполнения, чтобы включить эту баночку и убедитесь, что он на самом деле находится на пути к классам готов к использованию.Можете ли вы обновить свой вопрос, чтобы указать, как вы запускаете приложение из банки, а также отображаете внутреннюю структуру вашей банки? – ManoDestra
JOGL отсутствует, он должен быть в вашем пути к классу, Java3D 1.5 (устаревший) использует JOGL 1.1.1 (устаревший). Посмотрите на мой ответ ниже. j3dcore-ogl.dll необходимо, если Java3D не использует конвейер JOGL. Использование Java3D 1.6.0 менее громоздко и безопаснее. – gouessej