Openshift tomcat盒带上缺少Java3D
我有带tomcat墨盒的小齿轮。当我尝试执行使用Java3D生成图像的war时,我遇到以下异常:Openshift tomcat盒带上缺少Java3D,openshift,java-3d,Openshift,Java 3d,我有带tomcat墨盒的小齿轮。当我尝试执行使用Java3D生成图像的war时,我遇到以下异常: Caused by: java.lang.ClassNotFoundException: javax.media.j3d.Node 首先,我尝试在classpath中添加Java3D,我在pom.xml中添加了: <dependency> <groupId>java3d</groupId> <artifactId>j3d-core-u
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>
当我部署调整后的war时,出现以下异常:
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
现在看来所有的java3D类和*.so库都找到了。现在还有一个问题:
java.awt.HeadlessException
at sun.java2d.HeadlessGraphicsEnvironment.getDefaultScreenDevice(HeadlessGraphicsEnvironment.java:64)
问题是Java3D类Canvas3D不能在headless模式下工作。唯一的方法是用screen连接到某个X11服务器。这可以通过export DISPLAY=:0.0完成
就我所能测试的而言,似乎没有X11服务器,提供Java3D可以连接的屏幕。因此,在OpenShift平台上使用tomcat盒带运行Java3D是不可能的
谢谢您的帮助。您是否尝试将其添加到pom.xml中,以便通过maven安装?或者手动将.jar文件添加到项目中 您可能需要的不仅仅是核心包 因为您正在部署一个war文件,而不是使用maven,所以我认为您需要下载jar文件并将它们作为库嵌入到war文件中并使用它们 您还可以查看本文: 看起来还有一个.so文件需要包含在-Djava.library.path中 下面是java.net上包含jars和.so文件的文件
与开发运营团队交谈时,服务器上似乎没有安装该软件包。我正在与devops联系,查看是否安装了该软件包。
JAVA_OPTS=${JAVA_OPTS}" -Djava.awt.headless=true"
java.awt.HeadlessException
at sun.java2d.HeadlessGraphicsEnvironment.getDefaultScreenDevice(HeadlessGraphicsEnvironment.java:64)