【问题标题】:java.lang.NoClassDefFoundError: javax/media/opengl/GLException at processing.opengl.PGraphicsOpenGLjava.lang.NoClassDefFoundError: javax/media/opengl/GLException at processing.opengl.PGraphicsOpenGL
【发布时间】:2015-03-31 18:59:51
【问题描述】:

我正在 Raspberrypi(Raspbian) 上的 Processing 中编写一个程序,以导入 3D STL image 文件。它在 Microsoft (windows7) 和 Linux(Ubuntu) 平台上运行良好,但我正在努力在 Raspberrypi (Raspbian) 平台上运行相同的程序。

当我在 Raspberrypi 上运行此程序时,size(600,600,P3D) 出现错误...

编码

import toxi.geom.*;
import toxi.geom.mesh.*;
import toxi.processing.*;
TriangleMesh mesh;
ToxiclibsSupport gfx;
void setup() {
  size(600,600,P3D);
  mesh=(TriangleMesh)new STLReader().loadBinary(sketchPath("check.stl"),STLReader.TRIANGLEMESH);
  gfx=new ToxiclibsSupport(this);
}

void draw() {
  background(51);
  lights();
  translate(width/2,height/2,0);
  rotateX(mouseY*0.01);
  rotateY(mouseX*0.01);
  gfx.origin(new Vec3D(),200);
  noStroke();
  gfx.mesh(mesh,false,10);
}

错误

java.lang.NoClassDefFoundError: javax/media/opengl/GLException
    at processing.opengl.PGraphicsOpenGL.createPGL(PGraphicsOpenGL.java:1744)
    at processing.opengl.PGraphicsOpenGL.<init>(PGraphicsOpenGL.java:518)
    at processing.opengl.PGraphics3D.<init>(PGraphics3D.java:37)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
    at processing.core.PApplet.makeGraphics(PApplet.java:1919)
    at processing.core.PApplet.size(PApplet.java:1771)
    at processing.core.PApplet.size(PApplet.java:1742)
    at project5.setup(project5.java:27)
    at processing.core.PApplet.handleDraw(PApplet.java:2361)
    at processing.core.PGraphicsJava2D.requestDraw(PGraphicsJava2D.java:240)
    at processing.core.PApplet.run(PApplet.java:2256)
    at java.lang.Thread.run(Thread.java:724)
Caused by: java.lang.ClassNotFoundException: javax.media.opengl.GLException
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 15 more

【问题讨论】:

  • 您在 Raspian 上安装了哪个版本的 Processing(1.5.1、2.x 等?)。您是否尝试将渲染器设置为 OPENGL(size(600,600,P3D);) ?未经测试,我的猜测是有毒库的 ToxiclibsSupport 渲染器类依赖于 OpenGL 渲染器,在新版本的处理中,我认为 P3D 和 OPENGL 渲染器在某种程度上是合并的。尝试使用 1.5.1,希望它会起作用。如果没有,那还不算太糟糕。我假设如果您注释掉 ToxiclibsSupport 部分,代码将运行,如果是这种情况,也许您可​​以在没有它的情况下进行渲染(仅使用普通的处理调用)。
  • 我在Processing-2.2.1 上使用了这个命令OPENGL(size(600,600,P3D);) 但它给出了另一个错误The function OPENGL(void) does not exist.
  • 对不起,我的意思是这样使用它:size(600,600,OPENGL);。尝试一下,尽管它可能仍然会出现低级 OpenGL 错误。您可以尝试运行 Examples > Demos > Graphics > LowLevelGL 并指出应用程序是否可以运行(如果不能,您会遇到什么错误)?
  • 我也刚刚运行了那个程序Examples &gt; Demos &gt; Graphics &gt; LowLevelGL,但我仍然遇到同样的错误......
  • 我已经更新了答案:您现在可以尝试使用 3D 支持处理。

标签: opengl 3d raspberry-pi processing raspbian


【解决方案1】:

Processing 的问题是目前没有 3D 实现,因为 Raspberry PI 需要一个 OPENGL_ES 渲染器。 目前您只能以 2D 渲染(例如size(200,200,JAVA2D);)。

实际上有一个OPENGL_ES renderer in Processing,但它是针对Android模式的,它依赖于android SDK。据我所知,目前没有任何可以在 Raspberry PI 上使用的处理 OPENGL_ES 渲染器(如果有人知道,请告诉我)。理论上,无论如何,应该可以从 Android PGraphics 类中删除 android 依赖项,但感觉像是一个冒险的举动(特别是如果你有紧迫的截止日期)。要开始你可能想在 java 中查看EGL在树莓派上运行。

如果您只需要显示 STL 文件,我建议在这种情况下使用 OpenFrameworks。我已经为 OpenFramworks 修改了一个现有的 STL 插件并对其进行了测试:在 Raspberry PI 上的性能非常好。虽然它是 c++,但该项目的灵感来自于 Processing,很多功能听起来很熟悉。

安装 OpenFramworks 后,您可以下载 ofxSTLModel 并编译示例(我已对其进行了更新以在 Raspberry PI 上运行)。按任意键切换线框视图。

更新 现在有一个实验性的 Raspian 图像,包括具有 3D 支持的 Processing 3。查看this thread

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-06-17
    • 2014-08-30
    • 2012-02-09
    • 2014-04-23
    • 2017-04-02
    • 2016-02-09
    • 2020-05-28
    • 2011-02-20
    相关资源
    最近更新 更多