繁体   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