繁体   English   中英

java3D lib配置的问题

[英]problems with java3D lib configuration

我在配置 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/也有点帮助,但还不够。 因此,我觉得有必要编写一个完整的清单以使 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 初学者、学生或程序员的日子 :-)

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

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

作为给定答案的附录,帮助我设置 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 点。

此致

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

(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”添加到此文件夹并尝试!

对于 netbeans(此处为 12.2),您还必须添加 3 个外部库依赖项(j3dCore.jar、j3dutils.jar、vecmath.jar),但您不能像 Eclipse 项目中提到的那样添加“本机库位置”,所以改为你必须 :

  • 转到您的项目属性,
  • 进入“跑步”类别,
  • 添加以下“WM选项”(调整您的路径):

-Djava.library.path="C:\Local\Java\Java3D\1.5.1\bin"

还要在您的系统路径中添加 j3dcore-ogl.dll 库的正确路径,在我的情况下再次为“ C:\Local\Java\Java3D\1.5.1\bin ”(调整为您的)

希望它可以帮助 Netbeans 用户。

另外,我安装的 j3d 版本很旧,但我需要它来测试旧项目。

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

  GraphicsConfiguration config =
       SimpleUniverse.getPreferredConfiguration();

    Canvas3D canvas3D = new Canvas3D(config);

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

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

已解决 - 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。

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

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

' and look near the top for lines like " " which will tell you what binaries your system is loading.运行 'strace java ' 并在顶部附近查找类似“ ”的行,它会告诉你您的系统正在加载哪些二进制文件。

就我而言,重要的是amd64。

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

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

我有这个问题。

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

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

并下载并安装它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM