我有带tomcat墨盒的小装备。当我尝试执行使用Java3D生成图像的war时,我得到以下异常:
Caused by: java.lang.ClassNotFoundException: javax.media.j3d.Node
首先想到我尝试在classpath中添加Java3D,我已添加到我的pom.xml中:
<dependency>
<groupId>java3d</groupId>
<artifactId>j3d-core-utils</artifactId>
<version>1.3.1</version>
<scope>compile</scope>
</dependency>
这增加了最后的战争后面的文物:
[INFO] +- java3d:j3d-core-utils:jar:1.3.1:compile
[INFO] | +- java3d:vecmath:jar:1.3.1:compile
[INFO] | \- java3d:j3d-core:jar:1.3.1:compile
当我在提出异常后调整战争时:
Caused by: java.lang.UnsatisfiedLinkError: no J3D in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1886)
据我所知,异常,它表示java.library.path中没有本机Java3D库。所以我从建议的链接安装了Java3D,我还更新了j3dcore.jar,j3dutils.jar和vecmath.jar。 catalina.sh也更新了:
export LD_LIBRARY_PATH=/var/lib/openshift/<my-application-id>/app-root/data/j3d-1_5_2-linux-amd64/lib/amd64
我认为没有X11服务器可以使用,因为Java3D必须以无头模式运行。它可以在catalina.sh中设置如下:
JAVA_OPTS=${JAVA_OPTS}" -Djava.awt.headless=true"
现在似乎找到了所有java3D类和* .so库。现在还有另一个问题:
java.awt.HeadlessException
at sun.java2d.HeadlessGraphicsEnvironment.getDefaultScreenDevice(HeadlessGraphicsEnvironment.java:64)
问题是Java3D类Canvas3D无法在无头模式下工作。唯一的办法就是用屏幕连接到某个X11服务器。可以使用export DISPLAY =:0.0
来完成就我能够测试而言,似乎没有X11服务器,提供Java3D连接的屏幕。因此,使用tomcat盒式磁带在OpenShift平台上运行Java3D是不可能的。
感谢您的帮助。
答案 0 :(得分:0)
您是否尝试将其添加到pom.xml以通过maven安装?或者手动将.jar文件添加到项目中...... http://mvnrepository.com/artifact/java3d/j3d-core-utils/1.3.1
您可能需要的不仅仅是核心软件包。
由于您正在部署war文件而不使用maven,我认为您需要下载jar文件并将它们作为库嵌入到war文件中并使用它们。
看起来还有一个.so文件需要包含-Djava.library.path
之类的内容这是带有罐子和罐子的文件。 java.net上的.so文件http://download.java.net/media/java3d/builds/release/1.5.2/j3d-1_5_2-linux-amd64.zip
与开发运营团队一起讨论,服务器上似乎没有安装软件包。