java - 如何通过纯 Java 使用 P2D、P3D、FX2D?

标签 java processing noclassdeffounderror renderer

我只与 Processing's 合作过到目前为止的标准渲染器。我有一个java项目,我正在其中通过maven处理包含的内容。 由于其他renderers可能会更快,我想尝试为我当前的项目使用另一个渲染器,但任何其他渲染器对我来说都失败(P2D、P3D、FX2D)。仅默认情况下,Java2D 有效。

我觉得很奇怪,所以我开始了另一个项目,里面什么都没有,只是创建一个空框架。我首先尝试在Processing.exe 中将其作为草图运行,并且它有效:

草图代码:

void setup()
{
  size(500, 200, P3D);
}

void draw()
{
}

然后我将其重写为纯java:

import processing.core.PApplet;

public class Test extends PApplet
{

        public void setup() {
        }

        public void draw() {
        }

        public void settings() {
                this.size(500, 200, P3D);
        }

        public static void main(final String[] passedArgs) {
                final String[] appletArgs = { "Test" };
                if (passedArgs != null) {
                        PApplet.main(concat(appletArgs, passedArgs));
                }
                else {
                        PApplet.main(appletArgs);
                }
        }
}

无论我到目前为止尝试了什么,我都会遇到以下异常:

java.lang.NoClassDefFoundError: com/jogamp/opengl/GLException
    at processing.opengl.PGraphicsOpenGL.createPGL(PGraphicsOpenGL.java:712)
    at processing.opengl.PGraphicsOpenGL.<init>(PGraphicsOpenGL.java:569)
    at processing.opengl.PGraphics3D.<init>(PGraphics3D.java:35)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77)
    at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499)
    at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480)
    at processing.core.PApplet.makeGraphics(PApplet.java:2235)
    at processing.core.PApplet.createPrimaryGraphics(PApplet.java:2314)
    at processing.core.PApplet.initSurface(PApplet.java:10828)
    at processing.core.PApplet.runSketch(PApplet.java:10767)
    at processing.core.PApplet.main(PApplet.java:10467)
    at Test.main(Test.java:19)
Caused by: java.lang.ClassNotFoundException: com.jogamp.opengl.GLException
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520)
    ... 14 more
java.lang.RuntimeException: com/jogamp/opengl/GLException
    at processing.core.PApplet.makeGraphics(PApplet.java:2268)
    at processing.core.PApplet.createPrimaryGraphics(PApplet.java:2314)
    at processing.core.PApplet.initSurface(PApplet.java:10828)
    at processing.core.PApplet.runSketch(PApplet.java:10767)
    at processing.core.PApplet.main(PApplet.java:10467)
    at Test.main(Test.java:19)

我正在使用 Java 17,并且已经尝试使用 Java 8 运行,因为我读到这可能有效,但是......它没有。 是否无法在processing.exe之外运行这些P2D、P3D、FX2D草图?

最佳答案

解决此问题的更好方法是使用更新的处理4。 Micycle1 通过 JitPack 使处理 4 核可与 Maven 一起使用:https://github.com/micycle1/processing-core-4

关于java - 如何通过纯 Java 使用 P2D、P3D、FX2D?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73841856/

相关文章:

java - 如何根据按下的按钮实例化不同大小的图标java

java - 测试产生随机结果的方法

java - Thymeleaf + Spring 表单 - 如何从 Controller 加载持久选择框值以查看?

java - 如何通过处理java来减慢 Sprite 动画的速度

java - 获取NoClassDefFoundError : com. mysql.jdbc.Driver

tomcat - JNI dll 文件在 tomcat 外部执行良好。但不在 tomcat 中运行,即使我将 dll 文件放入 tomcat/bin 中而不使用像 eclipse 这样的 ide

Java GridBagLayout 从操作中编辑 x 和 y

java - 直观显示算法进度

image - 图像的显性 "color"

java - 简单网络程序中的 noclassdefounderror。我正在使用 Eclipse IDE 来运行 java 程序