Openshift tomcat盒带上缺少Java3D

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

我有带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>
当我部署调整后的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)