我有一个使用Jogl 1.0库http://easystoneshop.com/applets/CountertopQuote/index.html的项目。我的应用程序从Java Web Start开始。所有工作都没问题,但在Mac Os X 10.7.5上更新JDK 1.7.0.51我的项目不起作用。 Exeption:
JNLPClassLoader:查找库libjogl.dylib QueueFlusher中的异常: javax.media.opengl.GLException:java.lang.UnsatisfiedLinkError:sun.java2d.opengl.CGLSurfaceData.createCGLContextOnSurface(Lsun / java2d / opengl / CGLSurfaceData; J)J 在com.sun.opengl.impl.Java2D.createOGLContextOnSurface(Java2D.java:470) 在com.sun.opengl.impl.macosx.MacOSXJava2DGLContext.create(MacOSXJava2DGLContext.java:116) at com.sun.opengl.impl.macosx.MacOSXJava2DGLContext.makeCurrentImpl(MacOSXJava2DGLContext.java:72) at com.sun.opengl.impl.GLContextImpl.makeCurrent(GLContextImpl.java:134) at com.sun.opengl.impl.GLDrawableHelper.invokeGL(GLDrawableHelper.java:182) 在javax.media.opengl.GLJPanel $ 2.run(GLJPanel.java:650) at sun.java2d.opengl.OGLRenderQueue $ QueueFlusher.run(OGLRenderQueue.java:234) 引起:java.lang.UnsatisfiedLinkError:sun.java2d.opengl.CGLSurfaceData.createCGLContextOnSurface(Lsun / java2d / opengl / CGLSurfaceData; J)J at sun.java2d.opengl.CGLSurfaceData.createCGLContextOnSurface(Native Method) at sun.java2d.opengl.CGLSurfaceData.createOGLContextOnSurface(CGLSurfaceData.java:378) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at com.sun.opengl.impl.Java2D.createOGLContextOnSurface(Java2D.java:468) ......还有6个
我尝试在Mac OS X 10.7.5上使用JDK 1.6.0.37运行项目并且都运行完毕。
我在JRE Library上添加了本机库文件libjogl.jnilib,并且作为应用程序在Mac上使用JDK 1.7。 我尝试将Jogl更新到2.2版,但有很多Exeption:
线程中的异常" AWT-EventQueue-0" javax.media.opengl.GLException:异常@ destroy&的联合身份验证(false) 在jogamp.opengl.GLContextImpl.destroy(GLContextImpl.java:447) 在javax.media.opengl.awt.GLJPanel $ OffscreenBackend.destroy(GLJPanel.java:1518) 在javax.media.opengl.awt.GLJPanel $ 6.run(GLJPanel.java:1248) 在javax.media.opengl.Threading.invoke(Threading.java:193) 在javax.media.opengl.awt.GLJPanel.dispose(GLJPanel.java:463) 在javax.media.opengl.awt.GLJPanel.removeNotify(GLJPanel.java:568) 在javax.media.opengl.awt.GLJPanel.destroy(GLJPanel.java:486) 在javax.media.opengl.awt.GLJPanel $ 2.run(GLJPanel.java:282) 在com.jogamp.nativewindow.awt.AWTWindowClosingProtocol $ WindowClosingAdapter.windowClosing(AWTWindowClosingProtocol.java:71) 在java.awt.Window.processWindowEvent(Window.java:2051) 在javax.swing.JFrame.processWindowEvent(JFrame.java:296) 在java.awt.Window.processEvent(Window.java:2009) at java.awt.Component.dispatchEventImpl(Component.java:4861) at java.awt.Container.dispatchEventImpl(Container.java:2287) at java.awt.Window.dispatchEventImpl(Window.java:2719) at java.awt.Component.dispatchEvent(Component.java:4687) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:735) at java.awt.EventQueue.access $ 200(EventQueue.java:103) at java.awt.EventQueue $ 3.run(EventQueue.java:694) at java.awt.EventQueue $ 3.run(EventQueue.java:692) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain $ 1.doIntersectionPrivilege(ProtectionDomain.java:76) at java.security.ProtectionDomain $ 1.doIntersectionPrivilege(ProtectionDomain.java:87) at java.awt.EventQueue $ 4.run(EventQueue.java:708) at java.awt.EventQueue $ 4.run(EventQueue.java:706) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain $ 1.doIntersectionPrivilege(ProtectionDomain.java:76) at java.awt.EventQueue.dispatchEvent(EventQueue.java:705) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138) at java.awt.EventDispatchThread.run(EventDispatchThread.java:91) 引起:javax.media.opengl.GLException:线程[AWT-EventQueue-0,6,main] glGetError()在调用glFramebufferRenderbuffer(0x8D40,0x8CE0,0x8D41,0x0)后返回以下错误代码:GL_INVALID_OPERATION(1282 0x502) ) 在javax.media.opengl.DebugGL4bc.writeGLError(DebugGL4bc.java:29490) 在javax.media.opengl.DebugGL4bc.glFramebufferRenderbuffer(DebugGL4bc.java:12353) at com.jogamp.opengl.FBObject.detachColorbufferImpl(FBObject.java:1570) 在com.jogamp.opengl.FBObject.detachAllImpl(FBObject.java:1870) at com.jogamp.opengl.FBObject.destroy(FBObject.java:1911) 在jogamp.opengl.GLFBODrawableImpl.initialize(GLFBODrawableImpl.java:163) 在jogamp.opengl.GLFBODrawableImpl.associateContext(GLFBODrawableImpl.java:347) 在jogamp.opengl.GLContextImpl.associateDrawable(GLContextImpl.java:733) 在jogamp.opengl.GLContextImpl.destroy(GLContextImpl.java:412) ......还有33个
我知道这个问题可以很简单地解决,但我已经在第二周打赌了。请帮帮我。
答案 0 :(得分:0)
Java 7 Update 51附带了一些针对Web Start和applet的新安全性更改。 See this link了解更详细的信息。有几件事情是:
答案 1 :(得分:0)
JOGL 1的维护已于2010年停止,您必须切换到JOGL 2(目前为2.1.4)。由于公共API有一些变化,你必须修改你的应用程序(一些软件包已被移动,你必须使用GLProfile,缓冲区实用程序现在在Buffers类中,...)。如果您怀疑GLJPanel中存在错误,我建议您联系JogAmp维护人员,并且您必须遵循mikemil对您自己的JAR的建议。