java - java3D lib 配置的问题

标签 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 并将它们全部添加为“引用库”我的项目文件夹。这消除了我收到的任何编译警告,但是当我编译并运行应用程序时,我收到以下异常!

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

最佳答案

我知道这个问题现在已经有几年了,但是这里的答案还不足以让我解决这个问题。他们只提供了部分帮助。 http://www.filsa.net/2008/07/17/eclipse-java3d-and-javalibrarypath/也有点帮助,但仍然不够。因此我觉得有必要写一个完整的 list 来让 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 .
  • Project > Properties > Java Compiler,勾选“Enable project specific settings”,然后选择正确的编译器合规级别 为您的项目。就我而言,它是 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 已添加到 路径 变量。 .dll 或 .so 文件包含 Java3D 使用的机器 native 代码。您的系统需要知道此代码的存在。
    在 Windows 下,要设置 PATH 变量,请在控制面板中打开系统设置并选择高级系统设置。在底部,您会找到“环境变量”按钮。在系统变量列表中,您将找到变量“路径”。确保路径列表中包含 j3dcore-ogl 的目录。
  • 回到 Eclipse,无论 *.jar 文件当前位于何处,请确保它们包含在您的 Project>Properties>Java Build Path>Libraries 中。您可以使用 添加它们。添加 JAR 添加外部 JAR ,取决于您是否将三个 JAR 复制到项目目录中。

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

    对于 Java 构建路径中列出的每个 Java3D 库
  • j3dcore.jar
  • j3dutils.jar
  • vecmath.jar,

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

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

    关于java - java3D lib 配置的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4098161/

    相关文章:

    android - 从模拟器发送短信到其他手机号码后如何进行确认?

    java - 如何检查日期是否在特定范围内?

    linux - 恢复QMainWindow float 工具栏的问题

    linux - 复制一个 1TB 的稀疏文件

    java - 右键单击 Maven 项目时,Eclipse 不显示作为 Maven 测试运行

    java - 将非开源依赖项与 Maven 捆绑在一起

    java - response.sendredirect() 改变方法类型

    java - 由于端口问题,JCo IDoc 服务器无法接收消息

    java - 如何在android的 ListView 中返回点击的阀门?

    linux - 查看一个 CPU 有多少个硬件性能计数器