12

我在配置 java3D 以使用我的 IDE 环境时遇到了一些麻烦......

我已经下载了 j3d-1_5_2-linux-i586.zip,并解压了 j3dcore.jar、j3dutils.jar、vecmath.jar、libj3dcore-ogl.so、libj3dcore-ogl-cg.so,并将它们全部添加为“引用库”我的项目文件夹。这消除了我收到的任何编译警告,但是当我编译并运行应用程序时,出现以下异常!

Exception in thread "main" java.lang.UnsatisfiedLinkError: no j3dcore-ogl in java.library.path
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1681)
    at java.lang.Runtime.loadLibrary0(Runtime.java:840)
    at java.lang.System.loadLibrary(System.java:1047)
    at javax.media.j3d.NativePipeline$1.run(NativePipeline.java:231)
    at java.security.AccessController.doPrivileged(Native Method)
    at javax.media.j3d.NativePipeline.loadLibrary(NativePipeline.java:200)
    at javax.media.j3d.NativePipeline.loadLibraries(NativePipeline.java:157)
    at javax.media.j3d.MasterControl.loadLibraries(MasterControl.java:987)
    at javax.media.j3d.VirtualUniverse.<clinit>(VirtualUniverse.java:299)
    at Hello3d.<init>(Hello3d.java:10)
    at Hello3d.main(Hello3d.java:18)

这里也是对源代码的快速浏览。注意:一旦将导入库路径添加为引用库,Eclipse 就会使用 Ctrl+Shift+O 自动拉入这些路径。

import javax.media.j3d.BranchGroup;
import com.sun.j3d.utils.geometry.ColorCube;
import com.sun.j3d.utils.universe.SimpleUniverse;

public class Hello3d {

    public Hello3d(){
        SimpleUniverse universe = new SimpleUniverse();
        BranchGroup group = new BranchGroup();
        group.addChild(new ColorCube(0.3));
        universe.getViewingPlatform().setNominalViewingTransform();
        universe.addBranchGraph(group);
    }

    public static void main(String[] args){
        new Hello3d();
    }
}

我不确定我对“j3dcore-ogl”的含义是什么,但我一直停留在这一点上。如何在系统环境或 IDE 项目中安装 java3D?请帮忙。

IDE:Eclipse SDK 3.5.2

JVM:java-6-sun-1.6.0.22

操作系统:Ubuntu 10.04 LTS

4

12 回答 12

27

我知道这个问题现在已经有几年了,但这里的答案不足以让我解决这个问题。他们只提供了部分帮助。http://www.filsa.net/2008/07/17/eclipse-java3d-and-javalibrarypath/也有点帮助,但还不够。因此,我觉得有必要编写一个完整的清单以使 Java3D 在 Eclipse 中工作。

几个月前,我已经遇到了同样的问题,并且在没有真正理解我所做的事情的情况下以某种方式解决了它。今天我想在另一台计算机上设置我的环境,你猜怎么着,我又遇到了同样的问题。我忘记了我必须做什么......然而,这一次,我更系统地解决了问题,现在我理解了每一步。

解决方案 - 详细的每一步

1)如果您正在导入其他人的项目,请确保在 Eclipse 中安装并选择了正确的 JDK 和 JRE。我的 Eclipse 选择了最新的 JRE 7。我安装的唯一一个。但是我从事的项目需要 JDK 6 和 JRE 6。如果您需要多个 java 版本,我建议在您的文件系统上使用以下结构

  • 一些路径/Java/JDK/JDK6/
  • 一些路径/Java/JDK/JDK7/
  • 一些路径/Java/JRE/JRE6/
  • 一些路径/Java/JRE/JRE7/
  • 一些路径/Java/Java3D/

2)Eclipse中,您必须执行以下步骤来选择正确的 JDK 和 JRE

  • Project > Properties > Java Compiler,选中“启用项目特定设置”,然后为您的项目选择正确的编译器合规级别。在我的情况下,它是1.6用于JDK6。(命名对我来说真的很混乱,至少 6 是一个提示。)
  • 您还必须确保在运行应用程序时使用了正确的JRE 。因此打开Run>Run Configurations并选择选项卡 JRE。如果您使用 JDK 6,那么您必须确保使用 JRE 6。如果单击“已安装的 JRE”,然后添加somePath/Java/JRE/JRE6/目录,则可以添加 JRE。

3)正确设置 Java 环境,确保在您的机器上安装了Java3D 。你不能做错任何事。

4)在您的 Java3D 安装目录中,找到文件

  • j3dcore-ogl.dll(对于 Windows;在 Linux 上是 j3dcore-ogl.so)
  • j3dcore.jar
  • j3dutils.jar
  • vecmath.jar

如果您正确设置环境,这些文件的位置并不重要,我将对此进行解释。因此,如果您愿意,您可以将这些文件复制到您的项目目录中,以便将所需的一切都放在一个地方。

5)找到这些文件后,确保

  • 在您的操作系统上,j3dcore-ogl.dll的位置被添加到PATH变量中。.dll 或 .so 文件包含 Java3D 使用的机器本机代码。您的系统需要知道此代码的存在。在 Windows 下,要设置 PATH 变量,请在控制面板中打开系统设置并选择高级系统设置。在底部,您会找到“环境变量”按钮。在系统变量列表中,您将找到变量“路径”。确保 j3dcore-ogl 的目录包含在路径列表中。
  • 回到 Eclipse,无论 *.jar 文件当前在哪里,确保它们包含在您的Project>Properties>Java Build Path>Libraries中。您可以使用Add JARAdd External JAR添加它们,具体取决于您是否将三个 JAR 复制到项目目录中。

6)现在是今天拯救我的部分。

对于 Java 构建路径中列出的每个 Java3D 库

  • j3dcore.jar
  • j3dutils.jar
  • vecmath.jar,

您需要指定Native Library Location。本机库是j3dcore-ogl.dll,因此编辑本机库位置以指向包含 j3dcore-ogl.dll 的目录。

我相信,这些都是在 Eclipse 中设置 Java3D 必须完成的所有步骤,因为我今天在一台新计算机上设置了所有内容。现在我希望这些说明能够拯救一些其他可怜的 Java 初学者、学生或程序员的日子 :-)

于 2013-08-06T20:25:23.560 回答
8

Java 抱怨是因为它在 Java3D 附带的系统路径上找不到本机库(*.so 文件)。究竟如何解决这个问题取决于您。您可以执行以下任一操作:

1) 确保您的系统路径包含 Java3D 提供的 *.so 文件

2) 设置你的 LD_LIBRARY_PATH 环境变量: export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/"path-to-java3d-libraries"/

3)执行java时设置java.library.path:java -Djava.library.path=$LD_LIBRARY_PATH:/usr/lib/"path-to-java3d-libraries"/

为确保您的设置正确,请将以下内容添加到您的 Java 代码中,并确保报告的路径包含其上的共享库

System.out.println("LD Library Path:" + System.getProperty("java.library.path"));
于 2010-11-15T19:06:20.583 回答
2

我知道这是一个非常古老的问题,但一些开发人员仍在安装 Java 3D 的过时版本,无论有没有 IDE,它都更难使用。请宁愿使用 Java 3D 1.6.0 并按照我在此处提供的详细说明(英文和法文)进行操作。

于 2014-10-03T11:08:37.710 回答
1

作为给定答案的附录,帮助我设置 java 3d 的是:将所有 .dll 文件从“C:\Program Files\Java\Java3D\1.5.X\bin\”复制并粘贴到“C:\Program Files\ Java\jre6\bin\"。因此,将 Java3D 形成为我的实际 jre6(从 bin 到 bin)。

以前我也将classpath/(你也可以设置路径)设置为3dcore.jar、j3dutils.jar、vecmath.jar、j3dcore-ogl.dll,但还是不行。

复制过去 j3dcore-ogl.dll(如上所述)并将类路径留给 3dcore.jar、j3dutils.jar、vecmath.jar(在“C:\Program Files\Java\Java3D\1.5.X\ext\”中)后它工作美好的。

我在这里找到了帮助:http ://www.xinapse.com/Manual/install_windows.html 看第 2 点。

此致

于 2014-09-23T09:37:37.120 回答
0

project/properties/java 构建路径/源选项卡/展开并选择本机库位置/导航到 i386 文件夹。

于 2011-05-06T19:34:49.903 回答
0

(Windows同样的问题已解决)

"java.library.path" = PATH = C:\Program Files (x86)\Common Files\Oracle\Java\javapath\
(inside this folder: javaws.exe, javaw.exe,java.exe)

复制:j3dcore-ogl.“dll”到此文件夹并尝试!

于 2020-02-01T21:55:46.757 回答
-1

我有同样的问题。解决了它设置本机路径:

属性 - java 构建路径 - 库 - java3Dlib - 本机库位置 - 外部文件夹 -----> 找到路径:....Java/Java3D/1.5.1/bin 或文件所在的路径:j3dcore-ogl .dll

于 2014-02-01T16:35:56.873 回答
-1

已解决 - JonnyO 的回答是正确的。

我在 linux 上使用 java 8,并从https://java3d.java.net/binary-builds.html下载(采用 linux-amd64 版本的英特尔 64 位系统)。

解压下载的文件,然后解压包含的j3d-jre.zip,将jar文件添加到项目中,将libj3dcore-ogl.so添加到jar中,还是不行。我必须将 libj3dcore-ogl.so 添加到库路径中。(我很懒,我只是复制到/usr/lib,什么就够了。)

现在它正在工作。

PS:确保事先删除任何其他 j3dcore.jar 和 j3dutils.jar。

于 2015-01-05T12:28:10.747 回答
-1

试试这段代码,它对我有帮助:

  GraphicsConfiguration config =
       SimpleUniverse.getPreferredConfiguration();

    Canvas3D canvas3D = new Canvas3D(config);
于 2014-01-19T16:05:15.017 回答
-1

我最近遇到了同样的问题,这是我解决它的方法:

运行 'strace java filename ' 并在顶部附近查找类似“ open(”/usr/lib/jvm/java-8-oracle/jre/bin/../lib/amd64/libpthread.so ”的行,它会告诉你您的系统正在加载哪些二进制文件。

就我而言,重要的是amd64。

返回 java3d 下载页面并下载(在这种情况下)amd64 版本的二进制文件并安装它。覆盖 lib/ext 中的 .so 文件(vecmath、j3dcore 和 j3dutils)。

再次测试您的 java3d 程序,它应该可以工作。

于 2017-12-26T22:39:18.770 回答
-1

我遇到了这个确切的问题,我的解决方案(我使用 eclipse)是下载 32 位(i586)(来自https://java3d.java.net/binary-builds.html)存档并使用那些本地人。

于 2015-10-31T03:25:06.157 回答
-3

我有这个问题。

下载 java3d 插件并安装就足够了。

在您的搜索引擎中,例如 Google 搜索“java3d 插件”

并下载并安装它。

于 2011-02-04T18:25:34.733 回答