Login  Register

Re: Jogl/Jogamp on Java 9 no compatible graphics context

Posted by douglaslyon on Jan 09, 2018; 12:34am
URL: https://forum.jogamp.org/Jogl-Jogamp-on-Java-9-tp4038012p4038496.html

Hi Julien,
In webstart I now have:
  <j2se version="9+"
           initial-heap-size="64m"
           max-heap-size="384m"
           java-vm-args="-ea --add-exports=java.base/com.jogamp=ALL-UNNAMED"
     />

It runs OK on the mac, except for the following error:
Bug 1004: Caught: class com.jogamp.nativewindow.awt.AppContextInfo
cannot access class sun.awt.AppContext (in module java.desktop) because
module java.desktop does not export sun.awt to unnamed module @28bdf016
java.lang.IllegalAccessException: class
com.jogamp.nativewindow.awt.AppContextInfo cannot access class
sun.awt.AppContext (in module java.desktop) because module java.desktop
does not export sun.awt to unnamed module @28bdf016
        at
java.base/jdk.internal.reflect.Reflection.newIllegalAccessException(Unknown
Source)
        at java.base/java.lang.reflect.AccessibleObject.checkAccess(Unknown Source)
        at java.base/java.lang.reflect.Method.invoke(Unknown Source)
        at
com.jogamp.nativewindow.awt.AppContextInfo.fetchAppContext(AppContextInfo.java:186)
        at
com.jogamp.nativewindow.awt.AppContextInfo.update(AppContextInfo.java:130)
        at
com.jogamp.nativewindow.awt.AppContextInfo.<init>(AppContextInfo.java:45)
        at com.jogamp.nativewindow.awt.JAWTWindow.<init>(JAWTWindow.java:128)
        at
jogamp.nativewindow.jawt.macosx.MacOSXJAWTWindow.<init>(MacOSXJAWTWindow.java:79)
        at
java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native
Method)
        at
java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(Unknown
Source)
        at
java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown
Source)
        at java.base/java.lang.reflect.Constructor.newInstance(Unknown Source)
        at
jogamp.nativewindow.NativeWindowFactoryImpl.getAWTNativeWindow(NativeWindowFactoryImpl.java:105)
        at
jogamp.nativewindow.NativeWindowFactoryImpl.getNativeWindowImpl(NativeWindowFactoryImpl.java:66)
        at
com.jogamp.nativewindow.NativeWindowFactory.getNativeWindow(NativeWindowFactory.java:593)
        at
com.jogamp.opengl.awt.GLCanvas.createJAWTDrawableAndContext(GLCanvas.java:712)
        at com.jogamp.opengl.awt.GLCanvas.addNotify(GLCanvas.java:623)
        at java.desktop/java.awt.Container.addNotify(Unknown Source)
        at java.desktop/java.awt.Window.addNotify(Unknown Source)
        at java.desktop/java.awt.Frame.addNotify(Unknown Source)
        at java.desktop/java.awt.Window.show(Unknown Source)
        at java.desktop/java.awt.Component.show(Unknown Source)
        at java.desktop/java.awt.Component.setVisible(Unknown Source)
        at java.desktop/java.awt.Window.setVisible(Unknown Source)
        at j3d.JOGLQuad.main(JOGLQuad.java:96)
        at
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native
Method)
        at
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown
Source)
        at
java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown
Source)
        at java.base/java.lang.reflect.Method.invoke(Unknown Source)
        at jdk.javaws@9.0.1/com.sun.javaws.Launcher.executeApplication(Unknown
Source)
        at jdk.javaws@9.0.1/com.sun.javaws.Launcher.executeMainClass(Unknown
Source)
        at jdk.javaws@9.0.1/com.sun.javaws.Launcher.doLaunchApp(Unknown Source)
        at jdk.javaws@9.0.1/com.sun.javaws.Launcher.run(Unknown Source)
        at java.base/java.lang.Thread.run(Unknown Source)
Bug 1004: Caught: class com.jogamp.nativewindow.awt.AppContextInfo
cannot access class sun.awt.AppContext (in module java.desktop) because
module java.desktop does not export sun.awt to unnamed module @28bdf016
java.lang.IllegalAccessException: class
com.jogamp.nativewindow.awt.AppContextInfo cannot access class
sun.awt.AppContext (in module java.desktop) because module java.desktop
does not export sun.awt to unnamed module @28bdf016
        at
java.base/jdk.internal.reflect.Reflection.newIllegalAccessException(Unknown
Source)
        at java.base/java.lang.reflect.AccessibleObject.checkAccess(Unknown Source)
        at java.base/java.lang.reflect.Method.invoke(Unknown Source)
        at
com.jogamp.nativewindow.awt.AppContextInfo.fetchAppContext(AppContextInfo.java:186)
        at
com.jogamp.nativewindow.awt.AppContextInfo.update(AppContextInfo.java:130)
        at
com.jogamp.nativewindow.awt.AppContextInfo.invokeOnAppContextThread(AppContextInfo.java:102)
        at
com.jogamp.nativewindow.awt.JAWTWindow.attachSurfaceLayer(JAWTWindow.java:491)
        at
jogamp.opengl.macosx.cgl.MacOSXCGLContext$NSOpenGLImpl$AttachGLLayerCmd.run(MacOSXCGLContext.java:764)
        at com.jogamp.common.util.RunnableTask.run(RunnableTask.java:125)

On windows we get:
Bug 1004: Caught: class com.jogamp.nativewindow.awt.AppContextInfo
cannot access class sun.awt.AppContext (in module java.desktop) because
module java.desktop does not export sun.awt to unnamed module @28bdf016
java.lang.IllegalAccessException: class
com.jogamp.nativewindow.awt.AppContextInfo cannot access class
sun.awt.AppContext (in module java.desktop) because module java.desktop
does not export sun.awt to unnamed module @28bdf016
        at
java.base/jdk.internal.reflect.Reflection.newIllegalAccessException(Unknown
Source)
        at java.base/java.lang.reflect.AccessibleObject.checkAccess(Unknown Source)
        at java.base/java.lang.reflect.Method.invoke(Unknown Source)
        at
com.jogamp.nativewindow.awt.AppContextInfo.fetchAppContext(AppContextInfo.java:186)
        at
com.jogamp.nativewindow.awt.AppContextInfo.update(AppContextInfo.java:130)
        at
com.jogamp.nativewindow.awt.AppContextInfo.<init>(AppContextInfo.java:45)
        at com.jogamp.nativewindow.awt.JAWTWindow.<init>(JAWTWindow.java:128)
        at
jogamp.nativewindow.jawt.macosx.MacOSXJAWTWindow.<init>(MacOSXJAWTWindow.java:79)
        at
java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native
Method)
        at
java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(Unknown
Source)
        at
java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown
Source)
        at java.base/java.lang.reflect.Constructor.newInstance(Unknown Source)
        at
jogamp.nativewindow.NativeWindowFactoryImpl.getAWTNativeWindow(NativeWindowFactoryImpl.java:105)
        at
jogamp.nativewindow.NativeWindowFactoryImpl.getNativeWindowImpl(NativeWindowFactoryImpl.java:66)
        at
com.jogamp.nativewindow.NativeWindowFactory.getNativeWindow(NativeWindowFactory.java:593)
        at
com.jogamp.opengl.awt.GLCanvas.createJAWTDrawableAndContext(GLCanvas.java:712)
        at com.jogamp.opengl.awt.GLCanvas.addNotify(GLCanvas.java:623)
        at java.desktop/java.awt.Container.addNotify(Unknown Source)
        at java.desktop/java.awt.Window.addNotify(Unknown Source)
        at java.desktop/java.awt.Frame.addNotify(Unknown Source)
        at java.desktop/java.awt.Window.show(Unknown Source)
        at java.desktop/java.awt.Component.show(Unknown Source)
        at java.desktop/java.awt.Component.setVisible(Unknown Source)
        at java.desktop/java.awt.Window.setVisible(Unknown Source)
        at j3d.JOGLQuad.main(JOGLQuad.java:96)
        at
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native
Method)
        at
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown
Source)
        at
java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown
Source)
        at java.base/java.lang.reflect.Method.invoke(Unknown Source)
        at jdk.javaws@9.0.1/com.sun.javaws.Launcher.executeApplication(Unknown
Source)
        at jdk.javaws@9.0.1/com.sun.javaws.Launcher.executeMainClass(Unknown
Source)
        at jdk.javaws@9.0.1/com.sun.javaws.Launcher.doLaunchApp(Unknown Source)
        at jdk.javaws@9.0.1/com.sun.javaws.Launcher.run(Unknown Source)
        at java.base/java.lang.Thread.run(Unknown Source)
Bug 1004: Caught: class com.jogamp.nativewindow.awt.AppContextInfo
cannot access class sun.awt.AppContext (in module java.desktop) because
module java.desktop does not export sun.awt to unnamed module @28bdf016
java.lang.IllegalAccessException: class
com.jogamp.nativewindow.awt.AppContextInfo cannot access class
sun.awt.AppContext (in module java.desktop) because module java.desktop
does not export sun.awt to unnamed module @28bdf016
        at
java.base/jdk.internal.reflect.Reflection.newIllegalAccessException(Unknown
Source)
        at java.base/java.lang.reflect.AccessibleObject.checkAccess(Unknown Source)
        at java.base/java.lang.reflect.Method.invoke(Unknown Source)
        at
com.jogamp.nativewindow.awt.AppContextInfo.fetchAppContext(AppContextInfo.java:186)
        at
com.jogamp.nativewindow.awt.AppContextInfo.update(AppContextInfo.java:130)
        at
com.jogamp.nativewindow.awt.AppContextInfo.invokeOnAppContextThread(AppContextInfo.java:102)
        at
com.jogamp.nativewindow.awt.JAWTWindow.attachSurfaceLayer(JAWTWindow.java:491)
        at
jogamp.opengl.macosx.cgl.MacOSXCGLContext$NSOpenGLImpl$AttachGLLayerCmd.run(MacOSXCGLContext.java:764)
        at com.jogamp.common.util.RunnableTask.run(RunnableTask.java:125)

And it does not run.

The error:
"because module java.desktop does not export sun.awt to unnamed module
@28bdf016" is telling.

I know NOTHING about exports (it is totally new to me)...so I tried:
  <j2se version="9+"
           initial-heap-size="64m"
           max-heap-size="384m"
           java-vm-args="-ea --add-exports=java.desktop/sun.awt=ALL-UNNAMED"
     />

Now I get:


java.lang.ArrayIndexOutOfBoundsException: -1
        at
jogamp.opengl.windows.wgl.awt.WindowsAWTWGLGraphicsConfigurationFactory.chooseGraphicsConfigurationImpl(WindowsAWTWGLGraphicsConfigurationFactory.java:171)
        at
com.jogamp.nativewindow.GraphicsConfigurationFactory.chooseGraphicsConfiguration(GraphicsConfigurationFactory.java:424)
        at
com.jogamp.opengl.awt.GLCanvas.chooseGraphicsConfiguration(GLCanvas.java:1560)
        at com.jogamp.opengl.awt.GLCanvas.addNotify(GLCanvas.java:611)
        at java.desktop/java.awt.Container.addNotify(Unknown Source)
        at java.desktop/java.awt.Window.addNotify(Unknown Source)
        at java.desktop/java.awt.Frame.addNotify(Unknown Source)
        at java.desktop/java.awt.Window.show(Unknown Source)
        at java.desktop/java.awt.Component.show(Unknown Source)
        at java.desktop/java.awt.Component.setVisible(Unknown Source)
        at java.desktop/java.awt.Window.setVisible(Unknown Source)
        at j3d.JOGLQuad.main(JOGLQuad.java:96)
        at
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native
Method)
        at
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown
Source)
        at
java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown
Source)
        at java.base/java.lang.reflect.Method.invoke(Unknown Source)
        at jdk.javaws@9.0.1/com.sun.javaws.Launcher.executeApplication(Unknown
Source)
        at jdk.javaws@9.0.1/com.sun.javaws.Launcher.executeMainClass(Unknown
Source)
        at jdk.javaws@9.0.1/com.sun.javaws.Launcher.doLaunchApp(Unknown Source)
        at jdk.javaws@9.0.1/com.sun.javaws.Launcher.run(Unknown Source)
        at java.base/java.lang.Thread.run(Unknown Source)

So that helped...a little!



I am looking at:
https://jogamp.org/bugzilla/show_bug.cgi?id=1317
again. I see where you put in:
--permit-illegal-access
so, I figured;
<j2se version="9+"
           initial-heap-size="64m"
           max-heap-size="384m"
           java-vm-args="--permit-illegal-access -ea
--add-exports=java.desktop/\
sun.awt=ALL-UNNAMED"
     />
might help...but it did not...so then I tried:
--add-exports=java.base/java.lang=ALL-UNNAMED
--add-exports=java.desktop/sun.awt=ALL-UNNAMED
--add-exports=java.desktop/sun.java2d=ALL-UNNAMED

but that did not work...
So, I got rid of the "ea" option to the jvm...and now

IT WORKS. The crowd is wild.

----------------------- The following is my solution ----------


<jnlp spec="1.0+"
  codebase="http://show.docjava.com:80/book/cgij/code/jnlp/"
 >
<information>
     <title>j3d.JOGLQuad</title>
     <vendor>DocJava, Inc.</vendor>
     <homepage href="http://www.docjava.com"/>
        <icon href="http://show.docjava.com:80/consulti/docjava.jpe"/>
     <offline-allowed />
   </information>

   <security>
     <all-permissions />
   </security>

   <resources>
     <j2se version="9+"
          initial-heap-size="64m"
          max-heap-size="384m"
          java-vm-args="--add-exports=java.base/java.lang=ALL-UNNAMED --add-expo
rts=java.desktop/sun.awt=ALL-UNNAMED
--add-exports=java.desktop/sun.java2d=ALL-U
NNAMED "
     />
     <extension name="Java3D"  href="jogl.jnlp"></extension>
     <jar href="joglquad.jar" />
   </resources>

   <application-desc main-class="j3d.JOGLQuad" />
</jnlp>

Will fine tune to see what will happen. The MAC errors are NOW gone!!

The NESTED jogl.jnlp has:
<jnlp spec="1.0+"
  codebase="http://show.docjava.com:80/book/cgij/code/jnlp/"
 >

  <information>
      <title>Java 3D</title>
      <vendor>DocJava Inc.</vendor>
      <homepage href="http://www.docjava.com"/>
      <description>Java 3D library</description>
   </information>

   <security>
     <all-permissions/>
   </security>

<resources os="Windows">
       <jar href="libs/jogl/j3dcore.jar" download="eager"/>
       <jar href="libs/jogl/j3dutils.jar"  download="eager"/>
       <jar href="libs/jogl/vecmath.jar"  download="eager"/>
</resources>
<resources os="Windows" arch="amd64">
<nativelib href="libs/jogl/natives/windows-amd64/gluegen-rt.dll.jar"
download="e
ager"/>
<nativelib href="libs/jogl/natives/windows-amd64/joal.dll.jar"
download="eager"/
 >
<nativelib href="libs/jogl/natives/windows-amd64/jocl.dll.jar"
download="eager"/
 >
<nativelib href="libs/jogl/natives/windows-amd64/jogl_desktop.dll.jar"
download=
"eager"/>
<nativelib href="libs/jogl/natives/windows-amd64/jogl_mobile.dll.jar"
download="
eager"/>
<nativelib
href="libs/jogl/natives/windows-amd64/nativewindow_awt.dll.jar" downl
oad="eager"/>
<nativelib
href="libs/jogl/natives/windows-amd64/nativewindow_win32.dll.jar" dow
nload="eager"/>
<nativelib href="libs/jogl/natives/windows-amd64/newt.dll.jar"
download="eager"/
 >
<nativelib href="libs/jogl/natives/windows-amd64/oculusvr.dll.jar"
download="eag
er"/>
<nativelib href="libs/jogl/natives/windows-amd64/soft_oal.dll.jar"
download="eag
er"/>
</resources>

<resources os="Windows" arch="x86">
<nativeib href="libs/jogl/natives/windows-i586/gluegen-rt.dll.jar"
download="eag
er"/>
<nativeib href="libs/jogl/natives/windows-i586/joal.dll.jar"
download="eager"/>
<nativeib href="libs/jogl/natives/windows-i586/jocl.dll.jar"
download="eager"/>
<nativeib href="libs/jogl/natives/windows-i586/jogl_desktop.dll.jar"
download="e
ager"/>
<nativeib href="libs/jogl/natives/windows-i586/jogl_mobile.dll.jar"
download="ea
ger"/>
<nativeib href="libs/jogl/natives/windows-i586/nativewindow_awt.dll.jar"
downloa
d="eager"/>
<nativeib
href="libs/jogl/natives/windows-i586/nativewindow_win32.dll.jar" downl
oad="eager"/>
<nativeib href="libs/jogl/natives/windows-i586/newt.dll.jar"
download="eager"/>
<nativeib href="libs/jogl/natives/windows-i586/oculusvr.dll.jar"
download="eager
"/>
<nativeib href="libs/jogl/natives/windows-i586/soft_oal.dll.jar"
download="eager
"/>
</resources>
<resources os="Mac">
       <jar href="libs/jogl/j3dcore.jar" download="eager"/>
       <jar href="libs/jogl/j3dutils.jar"  download="eager"/>
       <jar href="libs/jogl/vecmath.jar"  download="eager"/>
       <jar href="libs/jogl/jogamp-fat.jar"     download="eager"/>
</resources>

     <resources os="Linux" arch="i386">
       <nativelib href = "libs/linux/jogl-natives-linux-i586.jar" />
     </resources>
     <resources os="Linux" arch="x86">
       <nativelib href = "libs/linux/jogl-natives-linux-i586.jar" />
     </resources>
     <resources os="Linux" arch="amd64">
       <nativelib href = "libs/linux/jogl-natives-linux-amd64.jar" />
     </resources>
     <resources os="Linux" arch="x86_64">
       <nativelib href = "libs/linux/jogl-natives-linux-amd64.jar" />
     </resources>
     <component-desc />
</jnlp>

This is not as elegant as I would have liked. And the linux stuff is not
working, at the moment....but hey, its progress!

Bottom line, webstart works on the mac and windows 7 with jogl and jdk 8
or jdk9. I have not tested windows 10...yet.

Thank you so much for your help on this!!

Regards,
  - Doug


On 1/8/18 4:34 PM, gouessej [via jogamp] wrote:

> Please use "--add-exports" instead of "--add-opens". I have never
> suggested you to use "--add-opens", it doesn't have the same effect than
> "--add-exports".
> Julien Gouesse | Personal blog <http://gouessej.wordpress.com> | Website
> <http://tuer.sourceforge.net>
>
>
> ------------------------------------------------------------------------
> If you reply to this email, your message will be added to the discussion
> below:
> http://forum.jogamp.org/Jogl-Jogamp-on-Java-9-tp4038012p4038495.html
> To unsubscribe from Jogl/Jogamp on Java 9, click here
> <
> NAML
> <
http://forum.jogamp.org/template/NamlServlet.jtp?macro=macro_viewer&id=instant_html%21nabble%3Aemail.naml&base=nabble.naml.namespaces.BasicNamespace-nabble.view.web.template.NabbleNamespace-nabble.view.web.template.NodeNamespace&breadcrumbs=notify_subscribers%21nabble%3Aemail.naml-instant_emails%21nabble%3Aemail.naml-send_instant_email%21nabble%3Aemail.naml>
>