java.lang.NoSuchMethodError:javax.media.opengl.GLDrawableFactory.initSingleton()V

时间:2013-10-07 15:57:31

标签: java opengl

我正在尝试在我的Java项目中使用JZY3D库。

从基础开始,我设置了以下main():

public static void main(final String[] args) {
  new GLCapabilities(GLProfile.getDefault());
}

jogl-all.jar,gluegen-rt.jar和gluegen.jar文件位于构建路径中。我得到以下异常:

Exception in thread "main" java.lang.NoSuchMethodError: javax.media.opengl.GLDrawableFactory.initSingleton()V
    at javax.media.opengl.GLProfile.initProfilesForDefaultDevices(GLProfile.java:1444)
    at javax.media.opengl.GLProfile.access$100(GLProfile.java:76)
    at javax.media.opengl.GLProfile$1.run(GLProfile.java:174)
    at java.security.AccessController.doPrivileged(Native Method)
    at javax.media.opengl.GLProfile.initSingleton(GLProfile.java:140)
    at javax.media.opengl.GLProfile.initSingleton(GLProfile.java:199)
    at javax.media.opengl.GLProfile.getProfileMap(GLProfile.java:1914)
    at javax.media.opengl.GLProfile.get(GLProfile.java:815)
    at javax.media.opengl.GLProfile.getDefault(GLProfile.java:602)
    at javax.media.opengl.GLProfile.getDefault(GLProfile.java:613)
    at eu.crisis_economics.abm.model.SpecsCompetitionStrategyCFO.main(SpecsCompetitionStrategyCFO.java:312)

似乎3d库存在问题,但我无法弄清楚是什么。

2 个答案:

答案 0 :(得分:2)

  

jogl-all.jar,gluegen-rt.jar和gluegen.jar文件位于构建路径中。我得到以下异常:

从构建路径中删除gluegen.jar。 确保在运行时将这两个jar添加到类路径中! 在编译时和运行时只需要jogl-all.jar和gluegen-rt.jar(rt == runtime)。

此外,您还需要一份匹配的原生jars gluegen-rt-natives- os.and.arch .jar和jogl-all-natives- os.and.arch .jar用于您在gluegen-rt.jar和jogl-all.jar旁边使用的平台 http://jogamp.org/jogl/doc/deployment/JOGL-DEPLOYMENT.html#NativeJARFiles

答案 1 :(得分:0)

您是否尝试过Maven依赖,而不是手动添加这些jar?

我制作了一个干净的maven项目,添加了一个包含以下文件的新用户库:

  • org.jzy3d-0.9.jar
  • 依赖性/杂项/ opencsv-2.1.jar
  • 依赖性/杂项/ org.convexhull.jar
  • 依赖性/杂项/ SWT.JAR
  • 依赖性/杂项/ SWT-debug.jar

之后,我添加了以下maven依赖项:

<dependency>
  <groupId>org.jogamp.gluegen</groupId>
  <artifactId>gluegen-rt-main</artifactId>
  <version>2.0.2</version>
</dependency>
<dependency>
  <groupId>org.jogamp.jogl</groupId>
  <artifactId>jogl-all-main</artifactId>
  <version>2.0.2</version>
</dependency>

Build&amp;无异常运行。


更清洁的解决方案是: