gpt4 book ai didi

从 .jar 运行应用程序时出现 Java 3d 错误

转载 作者:行者123 更新时间:2023-11-30 07:23:44 27 4
gpt4 key购买 nike

您好,当我从 Eclipse 运行我的应用程序时,它运行得很好,但是当我将它导出为可运行的 jar 时,它无法运行。当我尝试从 cmd 运行它时,它给了我两个错误之一,第一个错误是在我使用“将所需的库复制到子文件夹中”导出它之后:

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 库 native 图书馆。而是使用 Java3D 1.6.0 pre 12 重建项目,它更容易使用,因为该版本依赖于 JOGL 2,它使用自动 native 库加载,并且所有内容都打包为 JAR,不再需要修改库路径,只需处理类路径即可。

请关注my tutorial ,尤其是最后一部分,其中包含(很多)更多信息。

最后,不保证您使用的过时版本可以在任何最新的操作系统上运行。如果有效,那你就很幸运;如果没有,没有人会修复它。

关于从 .jar 运行应用程序时出现 Java 3d 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37120001/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com