This works with Java 15 and older, but crashes for me when using Java 16:
Exception in thread "main" java.lang.reflect.InvocationTargetException at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:78) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:567) at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:61) Caused by: com.jogamp.opengl.GLException: Unable to determine GraphicsConfiguration: WindowsWGLGraphicsConfiguration[DefaultGraphicsScreen[WindowsGraphicsDevice[type .windows, connection decon, unitID 0, handle 0x0, owner false, NullToolkitLock[obj 0x7c9e8ba7]], idx 1], pfdID 64, ARB-Choosen true, requested GLCaps[rgba 8/8/8/1, opaque, accum-rgba 0/0/0/0, dp/st/ms 16/0/16, sample-ext default, dbl, mono , hw, GLProfile[GL3/GL4.hw], on-scr[.]], chosen GLCaps[wgl vid 64 arb: rgba 8/8/8/8, opaque, accum-rgba 16/16/16/16, dp/st/ms 16/0/16, sample-ext default, dbl, mono , hw, GLProfile[GL3/GL4.hw], on-scr[.]]] at jogamp.opengl.windows.wgl.awt.WindowsAWTWGLGraphicsConfigurationFactory.chooseGraphicsConfigurationImpl(WindowsAWTWGLGraphicsConfigurationFactory.java:182) at com.jogamp.nativewindow.GraphicsConfigurationFactory.chooseGraphicsConfiguration(GraphicsConfigurationFactory.java:424) at com.jogamp.opengl.awt.GLCanvas.chooseGraphicsConfiguration(GLCanvas.java:1513) at com.jogamp.opengl.awt.GLCanvas.addNotify(GLCanvas.java:609) at java.desktop/java.awt.Container.addNotify(Container.java:2801) at java.desktop/javax.swing.JComponent.addNotify(JComponent.java:4792) at java.desktop/java.awt.Container.addNotify(Container.java:2801) at java.desktop/javax.swing.JComponent.addNotify(JComponent.java:4792) at java.desktop/java.awt.Container.addNotify(Container.java:2801) at java.desktop/javax.swing.JComponent.addNotify(JComponent.java:4792) at java.desktop/java.awt.Container.addNotify(Container.java:2801) at java.desktop/javax.swing.JComponent.addNotify(JComponent.java:4792) at java.desktop/javax.swing.JRootPane.addNotify(JRootPane.java:729) at java.desktop/java.awt.Container.addNotify(Container.java:2801) at java.desktop/java.awt.Window.addNotify(Window.java:787) at java.desktop/java.awt.Frame.addNotify(Frame.java:493) at java.desktop/java.awt.Window.show(Window.java:1049) at java.desktop/java.awt.Component.show(Component.java:1720) at java.desktop/java.awt.Component.setVisible(Component.java:1667) at java.desktop/java.awt.Window.setVisible(Window.java:1032) at Main.main(Main.java:124) ... 5 more More info: >java --version openjdk 16 2021-03-16 OpenJDK Runtime Environment AdoptOpenJDK (build 16+36) OpenJDK 64-Bit Server VM AdoptOpenJDK (build 16+36, mixed mode, sharing) (Windows 10, Surface Pro 7) -Farrell |
The JDK16 release has changes the default jdk setting of --illegal-access from premit to deny https://openjdk.java.net/jeps/396Do your code work with --illegal-access=permit ? Best regards Xerxes Den tors 1 apr. 2021 04:07farrellf [via jogamp] <[hidden email]> skrev: This works with Java 15 and older, but crashes for me when using Java 16: |
Administrator
|
In reply to this post by farrellf
Have you tried this?
https://jogamp.org/bugzilla/show_bug.cgi?id=1317#c21
Julien Gouesse | Personal blog | Website
|
In reply to this post by Xerxes Rånby
Hi Xerxes,
That fixed it. "java --illegal-access=permit -jar my.jar" works fine. Are there any plans for JOGL to migrate off the no-longer-blessed internal APIs? Thanks, -Farrell |
Administrator
|
It's not possible in many cases as there are no replacements for many internal APIs we use but we'll probably make things more convenient in the future by using the appropriate exports so that you won't need to use "--illegal-access".
Julien Gouesse | Personal blog | Website
|
It looks like the current workaround won't be usable when Java 17 is released:
https://openjdk.java.net/jeps/403 Supposedly the APIs they deprecated have better alternatives. I don't know enough to go into detail, but it seems like now is the time to figure it out. -Farrell |
Administrator
|
It's not true for the Java native interface to AWT and of course, some alternatives aren't backward compatible. I'll try Java 17 soon.
Julien Gouesse | Personal blog | Website
|
Administrator
|
In reply to this post by farrellf
By the way, it works with Java 16.
Julien Gouesse | Personal blog | Website
|
Administrator
|
In reply to this post by farrellf
Hello
I'm going to try JOGL with OpenJDK 17 build 35, stay tuned.
Julien Gouesse | Personal blog | Website
|
Administrator
|
I can't build the master branch with Java 17:
Julien Gouesse | Personal blog | Website
|
Administrator
|
I can't build the oculusvr part because it seems to require an obsolete version of stdc++:
[cc] /usr/bin/ld : can't find -lstdc++ I installed lib64stdc++ but it didn't solve this problem. I'll try to run some examples with Java 17 anyway.
Julien Gouesse | Personal blog | Website
|
Administrator
|
T.U.E.R runs with Java 17, it complains a bit about some classes being moved:
java.lang.NoSuchMethodError: 'void jdk.incubator.foreign.MemorySegment.close()' I'm going to try some demos using AWT.
Julien Gouesse | Personal blog | Website
|
Administrator
|
I can't run AWT examples:
Exception in thread "main" java.lang.UnsatisfiedLinkError: /tmp/jogamp_0000/file_cache/jln3159141199686910866/jln18332382328256781421/natives/linux-amd64/libnativewindow_awt.so: /home/gouessej/Documents/installation/jdk-17/lib/libjawt.so: version `SUNWprivate_1.1' not found (required by /tmp/jogamp_0000/file_cache/jln3159141199686910866/jln18332382328256781421/natives/linux-amd64/libnativewindow_awt.so) at java.base/jdk.internal.loader.NativeLibraries.load(Native Method) at java.base/jdk.internal.loader.NativeLibraries$NativeLibraryImpl.open(NativeLibraries.java:384) at java.base/jdk.internal.loader.NativeLibraries.loadLibrary(NativeLibraries.java:228) at java.base/jdk.internal.loader.NativeLibraries.loadLibrary(NativeLibraries.java:170) at java.base/java.lang.ClassLoader.loadLibrary(ClassLoader.java:2389) at java.base/java.lang.Runtime.load0(Runtime.java:755) at java.base/java.lang.System.load(System.java:1953) at com.jogamp.common.jvm.JNILibLoaderBase.loadLibraryInternal(JNILibLoaderBase.java:603) at com.jogamp.common.jvm.JNILibLoaderBase.access$000(JNILibLoaderBase.java:63) at com.jogamp.common.jvm.JNILibLoaderBase$DefaultAction.loadLibrary(JNILibLoaderBase.java:106) at com.jogamp.common.jvm.JNILibLoaderBase.loadLibrary(JNILibLoaderBase.java:487) at jogamp.nativewindow.NWJNILibLoader.access$000(NWJNILibLoader.java:39) at jogamp.nativewindow.NWJNILibLoader$1.run(NWJNILibLoader.java:49) at jogamp.nativewindow.NWJNILibLoader$1.run(NWJNILibLoader.java:41) at java.base/java.security.AccessController.doPrivileged(AccessController.java:318) at jogamp.nativewindow.NWJNILibLoader.loadNativeWindow(NWJNILibLoader.java:41) at jogamp.nativewindow.jawt.JAWTUtil.<clinit>(JAWTUtil.java:336) at java.base/java.lang.Class.forName0(Native Method) at java.base/java.lang.Class.forName(Class.java:467) at com.jogamp.nativewindow.NativeWindowFactory$3.run(NativeWindowFactory.java:344) at com.jogamp.nativewindow.NativeWindowFactory$3.run(NativeWindowFactory.java:340) at java.base/java.security.AccessController.doPrivileged(AccessController.java:318) at com.jogamp.nativewindow.NativeWindowFactory.initSingleton(NativeWindowFactory.java:340) at com.jogamp.opengl.GLProfile.initProfilesForDefaultDevices(GLProfile.java:1721) at com.jogamp.opengl.GLProfile.access$000(GLProfile.java:80) at com.jogamp.opengl.GLProfile$1.run(GLProfile.java:230) at java.base/java.security.AccessController.doPrivileged(AccessController.java:318) at com.jogamp.opengl.GLProfile.initSingleton(GLProfile.java:216) at com.jogamp.opengl.GLProfile.getProfileMap(GLProfile.java:2297) at com.jogamp.opengl.GLProfile.get(GLProfile.java:1021) at com.jogamp.opengl.GLProfile.get(GLProfile.java:1050) at com.jogamp.opengl.GLProfile.getMaximum(GLProfile.java:756) at com.ardor3d.framework.jogl.CapsUtil.getProfile(CapsUtil.java:32) at com.ardor3d.framework.jogl.CapsUtil.getCapsForSettings(CapsUtil.java:103) at com.ardor3d.framework.jogl.CapsUtil.getCapsForSettings(CapsUtil.java:50) at com.ardor3d.framework.jogl.awt.JoglAwtCanvas.<init>(JoglAwtCanvas.java:55) at com.ardor3d.framework.jogl.awt.JoglAwtCanvas.<init>(JoglAwtCanvas.java:50) at com.ardor3d.example.canvas.JoglAwtExample.addCanvas(JoglAwtExample.java:153) at com.ardor3d.example.canvas.JoglAwtExample.main(JoglAwtExample.java:105) Please note that there is a branch named "java11", I only use the branch named "master".
Julien Gouesse | Personal blog | Website
|
Administrator
|
In reply to this post by gouessej
Hello
libstdc++-static-devel is required to compile under Mageia Linux, I've just succeeded to compile JOGL with Java 17 :)
Julien Gouesse | Personal blog | Website
|
Administrator
|
I get this exception during the AWT automatic tests:
[junit] Caught AppContextInfo(Bug 1004) 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 @2a48d10f on thread AWT-EventQueue-0 It's not a big deal, I'm going to use --add-opens.
Julien Gouesse | Personal blog | Website
|
In reply to this post by gouessej
Thanks for this really good news! I'll soon test rc-20210111 and will provide you my results.
|
Administrator
|
In reply to this post by gouessej
I've just added this at line 486 in jogl/make/build-test.xml:
<jvmarg line="--add-opens=java.desktop/sun.awt=ALL-UNNAMED"/> It fixes most of the tests. It must be propagated in some other tests too. Otherwise, you get this: [junit] ++++ TestCase.setUp: com.jogamp.opengl.test.junit.newt.parenting.TestParenting01dAWT - test02GLWindowReparentRecreateGLPreserve [junit] Caught AppContextInfo(Bug 1004) 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 @2a48d10f on thread AWT-EventQueue-0 [junit] [0]: java.base/jdk.internal.reflect.Reflection.newIllegalAccessException(Reflection.java:392) [junit] [1]: java.base/java.lang.reflect.AccessibleObject.checkAccess(AccessibleObject.java:674) [junit] [2]: java.base/java.lang.reflect.Method.invoke(Method.java:560) [junit] [3]: com.jogamp.nativewindow.awt.AppContextInfo.fetchAppContext(AppContextInfo.java:191) [junit] [4]: com.jogamp.nativewindow.awt.AppContextInfo.update(AppContextInfo.java:135) [junit] [5]: com.jogamp.nativewindow.awt.AppContextInfo.<init>(AppContextInfo.java:50) [junit] [6]: com.jogamp.nativewindow.awt.JAWTWindow.<init>(JAWTWindow.java:128) [junit] [7]: jogamp.nativewindow.jawt.x11.X11JAWTWindow.<init>(X11JAWTWindow.java:60) [junit] [8]: java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) [junit] [9]: java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77) [junit] [10]: java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) [junit] [11]: java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499) [junit] [12]: java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480) [junit] [13]: jogamp.nativewindow.NativeWindowFactoryImpl.getAWTNativeWindow(NativeWindowFactoryImpl.java:105) [junit] [14]: jogamp.nativewindow.NativeWindowFactoryImpl.getNativeWindowImpl(NativeWindowFactoryImpl.java:66) [junit] [15]: com.jogamp.nativewindow.NativeWindowFactory.getNativeWindow(NativeWindowFactory.java:654) [junit] [16]: jogamp.newt.awt.NewtFactoryAWT.getNativeWindow(NewtFactoryAWT.java:76) [junit] [17]: com.jogamp.newt.awt.NewtCanvasAWT.addNotify(NewtCanvasAWT.java:618) [junit] [18]: java.desktop/java.awt.Container.addNotify(Container.java:2804) [junit] [19]: java.desktop/java.awt.Container.addNotify(Container.java:2804) [junit] [20]: java.desktop/java.awt.Window.addNotify(Window.java:791) [junit] [21]: java.desktop/java.awt.Frame.addNotify(Frame.java:495) [junit] [22]: java.desktop/java.awt.Window.show(Window.java:1053) [junit] [23]: java.desktop/java.awt.Component.show(Component.java:1728) [junit] [24]: java.desktop/java.awt.Component.setVisible(Component.java:1675) [junit] [25]: java.desktop/java.awt.Window.setVisible(Window.java:1036) [junit] [26]: com.jogamp.opengl.test.junit.newt.parenting.TestParenting01dAWT$1.run(TestParenting01dAWT.java:143) [junit] [27]: java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:308) [junit] [28]: java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:771) [junit] [29]: java.desktop/java.awt.EventQueue$4.run(EventQueue.java:722) [junit] [30]: java.desktop/java.awt.EventQueue$4.run(EventQueue.java:716) [junit] [31]: java.base/java.security.AccessController.doPrivileged(AccessController.java:399) [junit] [32]: java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86) [junit] [33]: java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:741) [junit] [34]: java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203) [junit] [35]: java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124) [junit] [36]: java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113) [junit] [37]: java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109) [junit] [38]: java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) [junit] [39]: java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
Julien Gouesse | Personal blog | Website
|
Administrator
|
In reply to this post by Martin
Thank you Martin.
By the way, maybe we can get rid of AppContext, maybe it's already done in a branch. I'll check that as soon as possible.
Julien Gouesse | Personal blog | Website
|
Administrator
|
The app context is necessary to work around two bugs concerning applets and Java Webstart, both technologies no longer work with Java >= 9 anyway (they are deprecated since Java 9, Java Webstart was removed in Java 11, the applets are removed in Java 17). We could simply not try to get the app context when we use Java >= 17.
Julien Gouesse | Personal blog | Website
|
In reply to this post by gouessej
Hi Julien,
Sorry I missed this message. Just a word to say that I encountered the same problem in the past with JOGL 2.3.2 on Ubuntu 18.4, so I do not think this is related to JOGL 2.4.0. In my recent tests for 2.4.0 I have used Ubuntu 20 and did not encountered this problem. |
Free forum by Nabble | Edit this page |