【发布时间】:2014-02-24 17:36:06
【问题描述】:
我有一个使用 Jogl 1.0 库 http://easystoneshop.com/applets/CountertopQuote/index.html 的项目。我的应用程序以 Java Web Start 启动。一切正常,但在更新 JDK 1.7.0.51 的 Mac Os X 10.7.5 上,我的项目不起作用。例外:
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) 在 com.sun.opengl.impl.macosx.MacOSXJava2DGLContext.makeCurrentImpl(MacOSXJava2DGLContext.java:72) 在 com.sun.opengl.impl.GLContextImpl.makeCurrent(GLContextImpl.java:134) 在 com.sun.opengl.impl.GLDrawableHelper.invokeGL(GLDrawableHelper.java:182) 在 javax.media.opengl.GLJPanel$2.run(GLJPanel.java:650) 在 sun.java2d.opengl.OGLRenderQueue$QueueFlusher.run(OGLRenderQueue.java:234) 引起:java.lang.UnsatisfiedLinkError: sun.java2d.opengl.CGLSurfaceData.createCGLContextOnSurface(Lsun/java2d/opengl/CGLSurfaceData;J)J 在 sun.java2d.opengl.CGLSurfaceData.createCGLContextOnSurface(本机方法) 在 sun.java2d.opengl.CGLSurfaceData.createOGLContextOnSurface(CGLSurfaceData.java:378) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:606) 在 com.sun.opengl.impl.Java2D.createOGLContextOnSurface(Java2D.java:468) ... 6 更多
我尝试在带有 JDK 1.6.0.37 的 Mac Os X 10.7.5 上运行项目并且一切正常。
我在 JRE 库上添加了本机库文件 libjogl.jnilib,并且应用程序都可以在带有 JDK 1.7 的 Mac 上运行。 我尝试将 Jogl 更新到 2.2 版,但有很多例外:
线程“AWT-EventQueue-0”javax.media.opengl.GLException 中的异常:异常@destroy's associateDrawable(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) 在 java.awt.Component.dispatchEventImpl(Component.java:4861) 在 java.awt.Container.dispatchEventImpl(Container.java:2287) 在 java.awt.Window.dispatchEventImpl(Window.java:2719) 在 java.awt.Component.dispatchEvent(Component.java:4687) 在 java.awt.EventQueue.dispatchEventImpl(EventQueue.java:735) 在 java.awt.EventQueue.access$200(EventQueue.java:103) 在 java.awt.EventQueue$3.run(EventQueue.java:694) 在 java.awt.EventQueue$3.run(EventQueue.java:692) 在 java.security.AccessController.doPrivileged(本机方法) 在 java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76) 在 java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87) 在 java.awt.EventQueue$4.run(EventQueue.java:708) 在 java.awt.EventQueue$4.run(EventQueue.java:706) 在 java.security.AccessController.doPrivileged(本机方法) 在 java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76) 在 java.awt.EventQueue.dispatchEvent(EventQueue.java:705) 在 java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242) 在 java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161) 在 java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150) 在 java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146) 在 java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138) 在 java.awt.EventDispatchThread.run(EventDispatchThread.java:91) 原因:javax.media.opengl.GLException: Thread[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) 在 com.jogamp.opengl.FBObject.detachColorbufferImpl(FBObject.java:1570) 在 com.jogamp.opengl.FBObject.detachAllImpl(FBObject.java:1870) 在 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 更多
我知道问题可以很简单地解决,但我已经是第二周了。请帮帮我。
【问题讨论】: