当我从终端执行 Java 程序时,出现以下错误:java.lang.NoClassDefFoundError: com/jogamp/opengl/GLException

问题描述

我正在开发一个使用 Processing 来渲染图像的 Java 程序。我的库文件夹中有 core.jar 文件,程序在 Eclipse 上编译得很好。问题是我需要能够从命令行运行程序,但它不起作用。

这就是我正在做的:

首先我编译使用:

javac -cp "./../lib/*" -source 1.8 -target 1.8 -verbose generative/components/examples/VisTests.java

这给了我以下输出

warning: [options] bootstrap class path not set in conjunction with -source 8
[parsing started SimpleFileObject[/Users/user/Documents/Work/Research/CodeDev/MyProject/src/generative/components/examples/VisTests.java]]
[parsing completed 25ms]
[search path for source files: .,../lib/peasycam.jar,../lib/gluegen-rt-natives-macosx-universal.jar,../lib/cmaes_java.jar,../lib/commons-math3-3.6.1.jar,../lib/jogl-all.jar,../lib/cma-es-custom.jar,../lib/gluegen-rt.jar,../lib/core.jar,../lib/jogl-all-natives-macosx-universal.jar,../lib/peasy-math.jar]
[search path for class files: /Library/Java/JavaVirtualMachines/jdk-15.0.2.jdk/Contents/Home/lib/modules,.,../lib/peasy-math.jar]
[loading /modules/java.base/java/util/ArrayList.class]
[loading /modules/java.base/java/util/Random.class]
[loading ../lib/core.jar(/processing/core/papplet.class)]
[loading ../lib/core.jar(/processing/core/PConstants.class)]
[loading /modules/java.base/java/lang/Object.class]
[loading ../lib/peasycam.jar(/peasy/PeasyCam.class)]
[loading ./generative/components/Chromosome.class]
[loading ./generative/components/Environment.class]
[loading ./generative/components/Cell.class]
[loading ./generative/components/Organism.class]
[loading ./generative/components/Colony.class]
[loading ./generative/components/Simulation.class]
[loading ./generative/components/Colony3D.class]
[loading /modules/java.base/java/lang/String.class]
[loading /modules/java.base/java/lang/Deprecated.class]
[loading /modules/java.base/java/lang/annotation/Retention.class]
[loading /modules/java.base/java/lang/annotation/RetentionPolicy.class]
[loading /modules/java.base/java/lang/annotation/Target.class]
[loading /modules/java.base/java/lang/annotation/ElementType.class]
[loading /modules/java.base/jdk/internal/PreviewFeature.class]
[loading /modules/java.base/jdk/internal/PreviewFeature$Feature.class]
[checking generative.components.examples.VisTests]
[loading /modules/java.base/java/io/Serializable.class]
[loading /modules/java.base/java/lang/AutoCloseable.class]
[loading ./generative/components/CommonConsts.class]
[loading ../lib/core.jar(/processing/core/PImage.class)]
[loading ./generative/components/CommonFunctions.class]
[wrote generative/components/examples/VisTests.class]
[total 337ms]
1 warning

然后我运行程序:

java -cp ".:../lib/*" generative.components.examples.VisTests

返回以下内容

java.lang.NoClassDefFoundError: com/jogamp/opengl/GLCapabilitiesImmutable
    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 sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
    at processing.core.papplet.makeGraphics(papplet.java:2266)
    at processing.core.papplet.createPrimaryGraphics(papplet.java:2345)
    at processing.core.papplet.initSurface(papplet.java:10983)
    at processing.core.papplet.runSketch(papplet.java:10922)
    at generative.components.examples.VisTests.main(VisTests.java:138)
Caused by: java.lang.classNotFoundException: com.jogamp.opengl.GLCapabilitiesImmutable
    at java.net.urlclassloader.findClass(urlclassloader.java:382)
    at java.lang.classLoader.loadClass(ClassLoader.java:418)
    at java.lang.classLoader.loadClass(ClassLoader.java:351)
    ... 12 more
java.lang.RuntimeException: com/jogamp/opengl/GLCapabilitiesImmutable
    at processing.core.papplet.makeGraphics(papplet.java:2299)
    at processing.core.papplet.createPrimaryGraphics(papplet.java:2345)
    at processing.core.papplet.initSurface(papplet.java:10983)
    at processing.core.papplet.runSketch(papplet.java:10922)
    at generative.components.examples.VisTests.main(VisTests.java:138)

我使用的是装有 macOS 11.4 (Big Sur) 的 MacBook Pro。

据我所知,所有必需的 .jar 文件都已准备就绪,并且我正在使用的过程有效(根据我对其他不使用 Processing 的程序的测试)。那么我可能会错过什么?

编辑:我刚刚在没有使用 -source 和 -target 标志的情况下重新编译,问题已经解决。我会调查可能导致问题的原因。感谢评论的人。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)