java3D lib配置问题

问题描述 投票:11回答:11

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

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

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添加为Referenced Libraries,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

java linux eclipse exception java-3d
11个回答
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 /的Java / JDK / JDK6 /
  • somePath /的Java / JDK / JDK7 /
  • somePath /的Java / JRE / JRE6 /
  • somePath /的Java / JRE / JRE7 /
  • somePath / Java / Java3D /

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

  • 单击项目>属性> Java编译器,选中“启用项目特定设置”,然后为项目选择正确的编译器合规性级别。在我的情况下,使用JDK6是1.6。 (命名对我来说真的很混乱,至少6是暗示。)
  • 您还必须确保在运行应用程序时使用了正确的JRE。因此,请打开“运行”>“运行配置”,然后选择选项卡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
  • 木星3公爵夫人
  • vecmath.jar

如果您正确设置环境,这些文件的位置无关紧要,我将解释。因此,如果需要,可以将这些文件复制到项目目录中,以便在一个地方拥有所需的一切。

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

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

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

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

  • j3dcore.jar
  • 木星3公爵夫人
  • vecmath.jar,

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

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


-1
投票

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

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

就我而言,重要的是amd64。

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

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


-3
投票

我有这个问题。

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

在你的搜索引擎,如谷歌搜索“java3d插件”

并下载所以安装它。


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
投票

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


1
投票

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

以前我也将类路径/(你也可以设置路径)设置为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点。

最好的祝福


0
投票

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


-1
投票

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

  GraphicsConfiguration config =
       SimpleUniverse.getPreferredConfiguration();

    Canvas3D canvas3D = new Canvas3D(config);

-1
投票

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

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


-1
投票

解决了 - 对于Ansar Wright。

我在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。


-1
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.