[英]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 版本,我建议在您的文件系统上使用以下结构
2)在Eclipse中,您必须执行以下步骤来选择正确的 JDK 和 JRE 。
3)正确设置 Java 环境,确保在您的机器上安装了Java3D 。 你不能做错任何事。
4)在您的 Java3D 安装目录中,找到文件
如果您正确设置环境,这些文件的位置并不重要,我将对此进行解释。 因此,如果您愿意,您可以将这些文件复制到您的项目目录中,以便将所需的一切都放在一个地方。
5)找到这些文件后,确保
6)现在是今天拯救我的部分。
对于 Java 构建路径中列出的每个 Java3D 库
您需要指定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 项目中提到的那样添加“本机库位置”,所以改为你必须 :
-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.