簡體   English   中英

Java Web Start + Jogl + MacOSX + JDK1.7

[英]Java Web Start + Jogl + MacOSX + JDK1.7

我有一個使用Jogl 1.0庫的項目http://easystoneshop.com/applets/CountertopQuote/index.html 我的應用程序以Java Web Start開頭。 一切正常,但是在Mac OS X 10.7.5上更新JDK 1.7.0.51后,我的項目無法正常工作。 展品:

JNLPClassLoader:在QueueFlusher中查找庫libjogl.dylib異常:javax.media.opengl.GLException:java.lang.UnsatisfiedLinkError:sun.java2d.opengl.CGLSurfaceData.createCGLContextOnSurface(Lsun / java2d / opengl / CGLSurfaceData; J)J在com.sun.opengl.impl.macosx.MacOSXJava2DGLContext.create(MacOSXJava2DGLContext.java:116)上的.opengl.impl.Java2D.createOGLContextOnSurface(Java2D.java:470)在com.sun.opengl.impl.macosx.MacOSXJava2DGLContext。 (macOSXJava2DGLContext.java:72)com.sun.opengl.impl.GLContextImpl.makeCurrent(GLContextImpl.java:134)com.sun.opengl.impl.GLDrawableHelper.invokeGL(GLDrawableHelper.java:182)在javax.media。 sun.java2d.opengl.OGLRenderQueue $ QueueFlusher.run(OGLRenderQueue.java:234)處的opengl.GLJPanel $ 2.run(GLJPanel.java:650)原因:java.lang.UnsatisfiedLinkError:sun.java2d.opengl.CGLSurfaceData.createCGLContextOnSur (Lsun / java2d / opengl / CGLSurfaceData; J)J在sun.java2d.opengl.CGLSurfaceData.createCGLContextOnSurface(Native Method)在 位於sun.reflect.NativeMethodAccessorImpl.invoke0(本地方法)的sun.java2d.opengl.CGLSurfaceData.createOGLContextOnSurface(CGLSurfaceData.java:378)位於sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)位於sun.reflect.Delegating com.sun.opengl.impl.Java2D.createOGLContextOnSurface(Java2D.java:468)上java.lang.reflect.Method.invoke(Method.java:606)上的invoke(DelegatingMethodAccessorImpl.java:43)... 6更多

我嘗試在Mac OS X 10.7.5和JDK 1.6.0.37上運行項目,並且一切正常。

我在JRE庫上添加了本機庫文件libjogl.jnilib,並且作為Application都在Mac上使用了JDK 1.7。 我嘗試將Jogl更新到2.2版,但是有很多功能:

線程“ AWT-EventQueue-0”中的異常javax.media.opengl.GLException:javax.media.opengl.awt.GLJPanel上@ jogamp.opengl.GLContextImpl.destroy(GLContextImpl.java:447)上的@ @destroy的associateDrawable(false) javax.media.opengl.awt.GLJPanel的$ OffscreenBackend.destroy(GLJPanel.java:1518)javax.media.opengl.Threading.invoke(Threading.java:193)的$ 6.run(GLJPanel.java:1248) .media.opengl.awt.GLJPanel.dispose(GLJPanel.java:463)at javax.media.opengl.awt.GLJPanel.removeNotify(GLJPanel.java:568)at javax.media.opengl.awt.GLJPanel.destroy(GLJPanel .java:486)at javax.media.opengl.awt.GLJPanel $ 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),位於java.awt.Contai ner.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),位於java.security.ProtectionDomain $ 1.doIntersectionPrivilege(ProtectionDomain.java:76)處,java.security.ProtectionDomain $ 1.doIntersectionPrivilege(ProtectionDomain.java:87)處的java.security.AccessController.doPrivileged(本機方法)。 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),位於java.awt.EventQueue.dispatchEvent(EventQueue.java:705),位於java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242), java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)處的java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)處的java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)處的java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150) java.awt.EventDispatchThread.run(EventDispatchThread.java:91)處的.pumpEvents(EventDispatchThread.java:138)原因:javax.media.opengl.GLException:Thread [AWT-EventQueue-0,6,main] glGetError()調用glFramebufferRenderbuffer(0x8D40、0x8CE0、0x8D41、0x0)后返回以下錯誤代碼:GL_INVALID_OPERATION(1282 0x502),位於javax.media.opengl的javax.media.opengl.DebugGL4bc.writeGLError(DebugGL4bc.java:29490)。 com.jogamp.opengl.FBObject.detachColorbufferImpl(FBObject.java:1570)位於com.jogamp.opengl的DebugGL4bc.glFramebufferRenderbuffer(DebugGL4bc.java:12353)在com.jogamp.opengl處的com.jogamp.opengl .gbobject.destroy(FBObject.java:1911),位於jogamp.opengl.GLFBODrawableImpl.initialize(GL 位於jogamp.opengl.GLFBODrawableImpl.associateContext(GLFBODrawableImpl.java:347)處的FBODrawableImpl.java:163)位於jogamp.opengl.GLsIll.destroy(GLContextImpl.destroy(GLContextImpl。 )...另外33個

我知道可以很簡單地解決問題,但是我已經下了第二個賭注。 請幫幫我。

Java 7 Update 51對Web Start和applet進行了一些新的安全性更改。 有關更多詳細信息, 請參見此鏈接 有幾件事是:

  • 您需要使用有效證書而非自簽名證書對小程序進行簽名。
  • 您需要更改jar,以便在MANIFEST.MF中包含一些新屬性。
  • 您可能還需要更新標簽以包括權限屬性。

JOGL 1的維護已在2010年停止,您必須切換到JOGL 2(當前為2.1.4)。 由於公共API進行了一些更改,因此您必須修改您的應用程序(某些軟件包已移動,您必須使用GLProfile,緩沖區實用程序現在位於Buffers類中,...)。 如果您懷疑GLJPanel中的錯誤,我們建議您與JogAmp維護人員聯系,並且您必須按照mikemil的建議來編寫自己的JAR。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM