简体   繁体   English

Java Web Start + Jogl + MacOSX + JDK1.7

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

I have a project using Jogl 1.0 library http://easystoneshop.com/applets/CountertopQuote/index.html . 我有一个使用Jogl 1.0库的项目http://easystoneshop.com/applets/CountertopQuote/index.html My application start as Java Web Start. 我的应用程序以Java Web Start开头。 All work allright, but on Mac Os X 10.7.5 whith update JDK 1.7.0.51 my project don't work. 一切正常,但是在Mac OS X 10.7.5上更新JDK 1.7.0.51后,我的项目无法正常工作。 Exeption: 展品:

JNLPClassLoader: Finding library libjogl.dylib exception in QueueFlusher: javax.media.opengl.GLException: java.lang.UnsatisfiedLinkError: sun.java2d.opengl.CGLSurfaceData.createCGLContextOnSurface(Lsun/java2d/opengl/CGLSurfaceData;J)J at com.sun.opengl.impl.Java2D.createOGLContextOnSurface(Java2D.java:470) at 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) at javax.media.opengl.GLJPanel$2.run(GLJPanel.java:650) at sun.java2d.opengl.OGLRenderQueue$QueueFlusher.run(OGLRenderQueue.java:234) Caused by: java.lang.UnsatisfiedLinkError: sun.java2d.opengl.CGLSurfaceData.createCGLContextOnSurface(Lsun/java2d/opengl/CGLSurfaceData;J)J at sun.java2d.opengl.CGLSurfaceData.createCGLContextOnSurface(Native Method) at 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.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 more 位于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更多

I try run project on Mac Os X 10.7.5 whith JDK 1.6.0.37 and all worked. 我尝试在Mac OS X 10.7.5和JDK 1.6.0.37上运行项目,并且一切正常。

I add native library file libjogl.jnilib on JRE Library and as Application all worked on Mac whith JDK 1.7. 我在JRE库上添加了本机库文件libjogl.jnilib,并且作为Application都在Mac上使用了JDK 1.7。 I try update Jogl to version 2.2 but have many Exeption: 我尝试将Jogl更新到2.2版,但是有很多功能:

Exception in thread "AWT-EventQueue-0" javax.media.opengl.GLException: Exception @ destroy's associateDrawable(false) at jogamp.opengl.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.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) at java.awt.Contai 线程“ 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) 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 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.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) Caused by: javax.media.opengl.GLException: Thread[AWT-EventQueue-0,6,main] glGetError() returned the following error codes after a call to glFramebufferRenderbuffer( 0x8D40, 0x8CE0, 0x8D41, 0x0): GL_INVALID_OPERATION ( 1282 0x502), at javax.media.opengl.DebugGL4bc.writeGLError(DebugGL4bc.java:29490) at 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) at jogamp.opengl.GLFBODrawableImpl.initialize(GL 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 FBODrawableImpl.java:163) at jogamp.opengl.GLFBODrawableImpl.associateContext(GLFBODrawableImpl.java:347) at jogamp.opengl.GLContextImpl.associateDrawable(GLContextImpl.java:733) at jogamp.opengl.GLContextImpl.destroy(GLContextImpl.java:412) ... 33 more 位于jogamp.opengl.GLFBODrawableImpl.associateContext(GLFBODrawableImpl.java:347)处的FBODrawableImpl.java:163)位于jogamp.opengl.GLsIll.destroy(GLContextImpl.destroy(GLContextImpl。 )...另外33个

I understand that the problem can be solved very simple, but I'm already the second week I'll bet on it. 我知道可以很简单地解决问题,但是我已经下了第二个赌注。 Help me please. 请帮帮我。

Java 7 Update 51 came with some new security changes for Web Start and applets. Java 7 Update 51对Web Start和applet进行了一些新的安全性更改。 See this link for more detailed info. 有关更多详细信息, 请参见此链接 A couple of the things are: 有几件事是:

  • You need to sign the applet with a valid certificate, not self-signed cert. 您需要使用有效证书而非自签名证书对小程序进行签名。
  • You need to change the jar to include some new attributes to the MANIFEST.MF 您需要更改jar,以便在MANIFEST.MF中包含一些新属性。
  • You may also need to update the tag to include a permissions attribute. 您可能还需要更新标签以包括权限属性。

The maintenance of JOGL 1 has been stopped in 2010, you must switch to JOGL 2 (currently 2.1.4). JOGL 1的维护已在2010年停止,您必须切换到JOGL 2(当前为2.1.4)。 As there have been some changes in the public APIs, you'll have to modify your application (some packages have been moved, you'll have to use a GLProfile, the buffer utilities are now in the class Buffers, ...). 由于公共API进行了一些更改,因此您必须修改您的应用程序(某些软件包已移动,您必须使用GLProfile,缓冲区实用程序现在位于Buffers类中,...)。 I advise you to contact the JogAmp maintainers if you suspect a bug in GLJPanel and you'll have to follow mikemil's advises for your own JARs. 如果您怀疑GLJPanel中的错误,我们建议您与JogAmp维护人员联系,并且您必须按照mikemil的建议来编写自己的JAR。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM