NASAWorldWind / WorldWindJava

The NASA WorldWind Java SDK (WWJ) is for building cross-platform 3D geospatial desktop applications in Java.
724 stars 327 forks source link

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

Open Codemonkeycrii opened 5 years ago

Codemonkeycrii commented 5 years ago

Note: Any issue that does not include enough information to be reviewed in a timely manner may be closed at the maintainer's discretion.

Description

After compiling a java based Eclipse program that includes a World wind component. at run time I receive the following error"java.lang.NoSuchMethodError: javax.media.opengl.GLDrawableFactory.initSingleton()V"

Using jre1.8.0.202 And Worldwind-v2.1.0

May 02, 2019 3:07:21 PM com.rci.edge.service.log.impl.ConsoleToLogger$FilteredStream write INFO: java.lang.NoSuchMethodError: javax.media.opengl.GLDrawableFactory.initSingleton()V at javax.media.opengl.GLProfile.initProfilesForDefaultDevices(GLProfile.java:1431) at javax.media.opengl.GLProfile.access$100(GLProfile.java:76) at javax.media.opengl.GLProfile$1.run(GLProfile.java:157) at java.security.AccessController.doPrivileged(Native Method) at javax.media.opengl.GLProfile.initSingleton(GLProfile.java:123) at javax.media.opengl.GLProfile.getProfileMap(GLProfile.java:1892) at javax.media.opengl.GLProfile.get(GLProfile.java:836) at javax.media.opengl.GLProfile.get(GLProfile.java:865) at javax.media.opengl.GLProfile.getMaxFixedFunc(GLProfile.java:648) at gov.nasa.worldwind.Configuration.getMaxCompatibleGLProfile(Configuration.java:658) at gov.nasa.worldwind.Configuration.getRequiredGLCapabilities(Configuration.java:671) at gov.nasa.worldwind.awt.WorldWindowGLCanvas.(WorldWindowGLCanvas.java:64) at com.rci.edge.worldwind.adapter.impl.WorldWindController.(WorldWindController.java:34) at com.rci.edge.worldwind.adapter.impl.WorldWindAdapterView.initializeWorldWind(WorldWindAdapterView.java:317) at com.rci.edge.worldwind.adapter.impl.WorldWindAdapterView.(WorldWindAdapterView.java:93) at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) at java.lang.reflect.Constructor.newInstance(Unknown Source) at java.lang.Class.newInstance(Unknown Source) at org.eclipse.equinox.internal.ds.model.ServiceComponent.createInstance(ServiceComponent.java:457) at org.eclipse.equinox.internal.ds.model.ServiceComponentProp.createInstance(ServiceComponentProp.java:264) at org.eclipse.equinox.internal.ds.model.ServiceComponentProp.build(ServiceComponentProp.java:325) at org.eclipse.equinox.internal.ds.InstanceProcess.buildComponent(InstanceProcess.java:588) at org.eclipse.equinox.internal.ds.ServiceReg.getService(ServiceReg.java:53) at org.eclipse.osgi.internal.serviceregistry.ServiceUse$1.run(ServiceUse.java:120) at java.security.AccessController.doPrivileged(Native Method) at org.eclipse.osgi.internal.serviceregistry.ServiceUse.getService(ServiceUse.java:118) at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.getService(ServiceRegistrationImpl.java:447) at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.getService(ServiceRegistry.java:430) at org.eclipse.osgi.framework.internal.core.BundleContextImpl.getService(BundleContextImpl.java:667) at org.eclipse.equinox.internal.ds.InstanceProcess.getService(InstanceProcess.java:686) at org.eclipse.equinox.internal.ds.model.ComponentReference.getMethod(ComponentReference.java:111) at org.eclipse.equinox.internal.ds.model.ComponentReference.bind(ComponentReference.java:315) at org.eclipse.equinox.internal.ds.model.ServiceComponentProp.bindReference(ServiceComponentProp.java:423) at org.eclipse.equinox.internal.ds.model.ServiceComponentProp.bind(ServiceComponentProp.java:211) at org.eclipse.equinox.internal.ds.model.ServiceComponentProp.build(ServiceComponentProp.java:337) at org.eclipse.equinox.internal.ds.InstanceProcess.buildComponent(InstanceProcess.java:588) at org.eclipse.equinox.internal.ds.ServiceReg.getService(ServiceReg.java:53) at org.eclipse.osgi.internal.serviceregistry.ServiceUse$1.run(ServiceUse.java:120) at java.security.AccessController.doPrivileged(Native Method) at org.eclipse.osgi.internal.serviceregistry.ServiceUse.getService(ServiceUse.java:118) at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.getService(ServiceRegistrationImpl.java:447) at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.getService(ServiceRegistry.java:430) at org.eclipse.osgi.framework.internal.core.BundleContextImpl.getService(BundleContextImpl.java:667) at org.eclipse.equinox.internal.ds.InstanceProcess.getService(InstanceProcess.java:686) at org.eclipse.equinox.internal.ds.model.ComponentReference.getMethod(ComponentReference.java:111) at org.eclipse.equinox.internal.ds.model.ComponentReference.bind(ComponentReference.java:315) at org.eclipse.equinox.internal.ds.model.ServiceComponentProp.bindReference(ServiceComponentProp.java:423) at org.eclipse.equinox.internal.ds.model.ServiceComponentProp.bind(ServiceComponentProp.java:211) at org.eclipse.equinox.internal.ds.model.ServiceComponentProp.build(ServiceComponentProp.java:337) at org.eclipse.equinox.internal.ds.InstanceProcess.buildComponent(InstanceProcess.java:588) at org.eclipse.equinox.internal.ds.InstanceProcess.buildComponents(InstanceProcess.java:196) at org.eclipse.equinox.internal.ds.Resolver.buildNewlySatisfied(Resolver.java:441) at org.eclipse.equinox.internal.ds.Resolver.enableComponents(Resolver.java:213) at org.eclipse.equinox.internal.ds.SCRManager.performWork(SCRManager.java:800) at org.eclipse.equinox.internal.ds.SCRManager$QueuedJob.dispatch(SCRManager.java:767) at org.eclipse.equinox.internal.ds.WorkThread.run(WorkThread.java:89) at org.eclipse.equinox.internal.util.impl.tpt.threadpool.Executor.run(Executor.java:70)

wcmatthysen commented 5 years ago

@Codemonkeycrii, looks like you don't have JOGL on the classpath. You can go to the community edition for further support.

Codemonkeycrii commented 5 years ago

My part of my current Class path classpathentry exported="true" kind="lib" path="jogl-all-noawt.jar"/> classpathentry exported="true" kind="lib" path="jogl.jar"/> .

wcmatthysen commented 5 years ago

There is no jogl-all-noawt.jar or jogl.jar file in the WorldWind directory. There are only these JOGL jars:

jogl-all-natives-linux-amd64.jar
jogl-all-natives-linux-i586.jar
jogl-all-natives-macosx-universal.jar
jogl-all-natives-windows-amd64.jar
jogl-all-natives-windows-i586.jar
jogl-all.jar

You should have the jogl-all.jar file and one of the platform-dependent jars on your classpath. The same is true for Gluegen. I think you have a different JOGL jar on your classpath that is not compatible with WorldWind.

Codemonkeycrii commented 5 years ago

This a is my complete class path. gluegen.jar joal-natives-windows-amd64.jar joal.jar jocl-natives-windows-amd64.jar jocl.jar jogl.jar gluegen-rt-natives-windows-amd64.jar worldwindx.jar gluegen-rt.jar jogl-all.jar jogl-all-natives-windows-amd64.jar jdom.jar> org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6" org.eclipse.pde.core.requiredPlugins src osgi_src bin

wcmatthysen commented 5 years ago

Well, that jogl.jar should probably not be there. You should use the jogl-all.jar instead. That gluegen.jar looks old as well. You should use gluegen-rt.jar instead.