java3D lib配置问题

时间:2010-11-04 15:18:33

标签: java linux eclipse exception java-3d

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

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

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添加为引用库,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

12 个答案:

答案 0 :(得分:22)

我知道这个问题现在已经有几年了,但是这里的答案还不足以让我解决这个问题。他们只是部分帮助。 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版本,我建议在你的文件系统上使用以下结构

  • somePath /爪哇/ JDK / JDK6 /
  • somePath /爪哇/ JDK / JDK7 /
  • somePath /爪哇/ JRE / JRE6 /
  • somePath /爪哇/ JRE / JRE7 /
  • somePath /爪哇/ Java3D的/

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

  • 项目&gt;属性&gt; Java编译器,选中“启用项目特定设置”,然后为项目选择正确的编译器合规级别。在我的情况下,与 JDK6 一起使用 1.6 。 (命名对我来说真的很混乱,至少6是暗示。)
  • 运行应用程序时,还必须确保使用正确的 JRE 。因此,打开运行&gt;运行配置并选择选项卡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变量,请在“控制面板”中打开“系统设置”,然后选择“高级系统设置”。在底部,您将找到“环境变量”按钮。在“系统变量”列表中,您将找到变量“Path”。确保j3dcore-ogl的目录包含在路径列表中。
  • 返回Eclipse,无论* .jar文件当前在哪里,请确保它们包含在项目&gt;属性&gt; Java构建路径&gt;库中。您可以使用添加JAR 添加外部JAR 来添加它们,具体取决于您是否将三个JAR复制到项目目录中。

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

对于Java Build Path中列出的每个Java3D库

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

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

我相信,这些都是在eclipse中设置Java3D必须采取的步骤,因为我今天在一台新电脑上设置了所有内容。现在我希望这些说明可以节省一些其他可怜的Java初学者,学生或程序员的日子: - )

答案 1 :(得分:7)

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"));

答案 2 :(得分:2)

我知道这是一个非常古老的问题,但是一些开发人员仍在安装一个过时的Java 3D版本,无论是否使用IDE都难以使用。请使用Java 3D 1.6.0并按照我提供的详细说明(英语和法语)here

答案 3 :(得分:1)

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

以前我也设置了classpath /(你也可以设置路径) 3dcore.jar,j3dutils.jar,vecmath.jar,j3dcore-ogl.dll 但仍然没有奏效。

复制过j3dcore-ogl.dll(如上所述)并将类路径留给3dcore.jar,j3dutils.jar,vecmath.jar(在&#34; C:\ Program Files \ Java \ Java3D \ 1.5.X \ ext \&#34;)它工作正常。

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

祝你好运

答案 4 :(得分:0)

project / properties / java build path / source选项卡/展开并选择本机库位置/导航到i386文件夹。

答案 5 :(得分: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”复制到此文件夹,然后尝试!

答案 6 :(得分:-1)

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

  GraphicsConfiguration config =
       SimpleUniverse.getPreferredConfiguration();

    Canvas3D canvas3D = new Canvas3D(config);

答案 7 :(得分:-1)

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

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

答案 8 :(得分:-1)

已解决 - JonnyO回答是对的。

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

解压缩下载的文件,然后解压缩包含的j3d-jre.zip并将jar文件添加到项目中,并将libj3dcore-ogl.so添加到jar中,它仍然无法正常工作。我不得不将libj3dcore-ogl.so添加到库路径中。 (像我一样懒惰,我只是将它复制到/ usr / lib,这就足够了。)

现在它正在运作。

PS:请务必事先删除任何其他j3dcore.jar和j3dutils.jar。

答案 9 :(得分:-1)

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

答案 10 :(得分:-1)

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

运行&#39; strace java filename &#39;并且在顶部附近查看&#34; 打开的行(&#34; / usr / lib / jvm / java-8-oracle / jre / bin /../ lib / amd64 / libpthread.so &#34;它将告诉您系统正在加载哪些二进制文件。

就我而言,重要的是amd64。

返回java3d下载页面并下载(在本例中)amd64 verson的二进制文件并安装它。覆盖lib / ext中的.so文件(vecmath,j3dcore和j3dutils)。

再次测试你的java3d程序,它应该正常工作。

答案 11 :(得分:-3)

我有这个问题。

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

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

并下载以便安装它。