2014-02-24 64 views
0

我有一個項目使用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: Java Web Start + Jogl + MacOSX + JDK1.7

JNLPClassLoader:尋找庫libjogl.dylib在QueueFlusher 例外: javax.media.opengl.GLException:java.lang.UnsatisfiedLinkError中:sun.java2d.opengl.CGLSurfaceData.createCGLContextOnSurface(Lsun /的Java2D/OpenGL的/ CGLSurfaceData; 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) at com.sun.opengl.impl.GLContextImpl.makeCurrent(GLContextImpl.java:134) at com.su n.opengl.impl.GLDrawableHelper.invokeGL(GLDrawableHelper.java:182) at 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),Ĵ 在sun.java2d.opengl.CGLSurfaceData.createCGLContextOnSurface(本地方法) 在sun.java2d.opengl.CGLSurfaceData.createOGLContextOnSurface(CGLSurfaceData.java:378) 在sun.reflect.NativeMethodAccessorImpl.invoke0(本機方法) 在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個

我嘗試在Mac OS X 10.7.5上運行項目,即JDK 1.6.0.37,並全部運行。

我在JRE Library中添加了本機庫文件libjogl.jnilib,並且所有的應用程序都在JDK 1.7的Mac上工作。 我嘗試更新JOGL到2.2版本,但有很多Exeption:

異常在線程 「AWT-EventQueue的 - 0」 javax.media.opengl.GLException:異常@在jogamp.opengl破壞的associateDrawable(假) 。 GLContextImpl.destroy(GLContextImpl.java:447) at javax.media.opengl.awt.GLJPanel $ OffscreenBackend.destroy(GLJPanel.java:1518) at javax.media.opengl.awt.GLJPanel $ 6.run(GLJPanel.java :1248) at javax.media.opengl.Threading.invoke(Threading.java:193) at javax.media.opengl.awt.GLJPanel.dispose(GLJPanel.java:463) at javax.media.opengl.awt .GLJPanel.removeNotify(GLJPanel.java:568) at javax.media.opengl.awt.GLJPanel上的javax.media.opengl.awt.GLJPanel.destroy(GLJPanel.java:486) $ 2.run(GLJPanel.java:282) at com.jogamp.nativewindow.awt .AWTWindowClosingProtocol $ WindowClosingAdapter.windowClosing(AWTWindowClosingProtocol.java:71) at java.awt.Window.processWindowEvent(Window.java:2051) at javax.swing.JFrame.processWindowEvent(JFrame.java:296) at 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.secur ity.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 (EventDispatchThread.java:138) at java.awt.EventDispatchThread.run(EventDispatchThread.java:91) 原因:javax.media.opengl.GLException:線程[AWT-EventQueue-0,6,main] glGetError ()在調用glFr之後返回以下錯誤代碼amebufferRenderbuffer(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) at 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) at jogamp.opengl.GLContextImpl.destroy(GLC ontextImpl.java:412) ...... 33多個

據我所知,這個問題是可以解決的很簡單,但我已經是第二個星期我就賭。請幫幫我。

回答

0

Java 7 Update 51附帶了Web Start和Applet的一些新的安全更改。 See this link瞭解更多詳細信息。其中的一些是:

  • 您需要使用有效證書籤署小程序,而不是自簽名證書。
  • 您需要更改罐子以將一些新屬性添加到MANIFEST.MF
  • 您可能還需要更新標記以包含權限屬性。
0

JOGL 1的維護在2010年已停止,您必須切換到JOGL 2(當前2.1.4)。由於公共API有一些變化,您必須修改您的應用程序(某些軟件包已被移動,您必須使用GLProfile,緩衝區實用程序現在位於Buffers類中)。如果您懷疑GLJPanel中存在bug,我建議您聯繫JogAmp維護人員,並且您必須遵循mikemil針對您自己的JAR的建議。