Java17 compatibility error ??

classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|

Java17 compatibility error ??

Jerome
Hello,

I'm developing CodeLab IDE & Simulators using Java3D. To remain compatible with other libraries, I need to upgrade to Java 17 (https://adoptium.net/temurin/releases/?version=17), but apparently Java3D is causing compatibility problems. When will a Java3D version compatible with Java17 be available?

Thank you for help me!

Jerome
https://codelab.univ-lemans.fr


Caught AppContextInfo(Bug 1004) InaccessibleObjectException: Unable to make public static sun.awt.AppContext sun.awt.AppContext.getAppContext() accessible: module java.desktop does not "exports sun.awt" to unnamed module @4ee22985 on thread J3D-Renderer-1
    [0]: java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:354)
    [1]: java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:297)
    [2]: java.base/java.lang.reflect.Method.checkCanSetAccessible(Method.java:199)
    [3]: java.base/java.lang.reflect.Method.setAccessible(Method.java:193)
    [4]: com.jogamp.nativewindow.awt.AppContextInfo$1$1.run(AppContextInfo.java:40)
    [5]: com.jogamp.common.util.UnsafeUtil.doWithoutIllegalAccessLogger(UnsafeUtil.java:219)
    [6]: com.jogamp.nativewindow.awt.AppContextInfo$1.run(AppContextInfo.java:34)
    [7]: java.base/java.security.AccessController.doPrivileged(AccessController.java:318)
    [8]: com.jogamp.nativewindow.awt.AppContextInfo.<clinit>(AppContextInfo.java:31)
    [9]: com.jogamp.nativewindow.awt.JAWTWindow.<init>(JAWTWindow.java:128)
    [10]: jogamp.nativewindow.jawt.macosx.MacOSXJAWTWindow.<init>(MacOSXJAWTWindow.java:79)
    [11]: java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    [12]: java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77)
    [13]: java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    [14]: java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499)
    [15]: java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480)
    [16]: jogamp.nativewindow.NativeWindowFactoryImpl.getAWTNativeWindow(NativeWindowFactoryImpl.java:105)
    [17]: jogamp.nativewindow.NativeWindowFactoryImpl.getNativeWindowImpl(NativeWindowFactoryImpl.java:66)
    [18]: com.jogamp.nativewindow.NativeWindowFactory.getNativeWindow(NativeWindowFactory.java:654)
    [19]: org.jogamp.java3d.JoglPipeline$QueryCanvas.addNotify(JoglPipeline.java:8665)
    [20]: java.desktop/java.awt.Container.addNotify(Container.java:2804)
    [21]: java.desktop/java.awt.Window.addNotify(Window.java:791)
    [22]: java.desktop/java.awt.Dialog.addNotify(Dialog.java:770)
    [23]: java.desktop/java.awt.Dialog.conditionalShow(Dialog.java:917)
    [24]: java.desktop/java.awt.Dialog.show(Dialog.java:1048)
    [25]: java.desktop/java.awt.Component.show(Component.java:1728)
    [26]: java.desktop/java.awt.Component.setVisible(Component.java:1675)
    [27]: java.desktop/java.awt.Window.setVisible(Window.java:1036)
    [28]: java.desktop/java.awt.Dialog.setVisible(Dialog.java:1016)
    [29]: org.jogamp.java3d.JoglPipeline.getBestConfiguration(JoglPipeline.java:8439)
    [30]: org.jogamp.java3d.Renderer.doWork(Renderer.java:497)
    [31]: org.jogamp.java3d.J3dThread.run(J3dThread.java:271)
Reply | Threaded
Open this post in threaded view
|

Re: Java17 compatibility error ??

gouessej
Administrator
As I replied in a private message, you just have to use the usual "--add-opens" clause I mentioned in my tutorial to make it work.
Julien Gouesse | Personal blog | Website
Reply | Threaded
Open this post in threaded view
|

Re: Java17 compatibility error ??

goodwilling
In reply to this post by Jerome
In our case, we use the following options when using Java 17.

(Windows)
--add-exports=java.desktop/sun.awt=ALL-UNNAMED

(Linux)
--add-exports=java.desktop/sun.awt=ALL-UNNAMED  --add-opens=java.desktop/sun.awt.X11=ALL-UNNAMED

By the way, it is unfortunately found that the "--add exports" option is ignored in some Windows systems if it is added in .l4j.ini for Launch4j (an old version), whereas the option works if added to a Windows .bat file.
Reply | Threaded
Open this post in threaded view
|

Re: Java17 compatibility error ??

gouessej
Administrator
Thank you for the feedback. It's strange, "--add-opens java.desktop/sun.awt=ALL-UNNAMED" was enough to make it work under GNU Linux the last time I tried.
Julien Gouesse | Personal blog | Website
Reply | Threaded
Open this post in threaded view
|

Re: Java17 compatibility error ??

Sven Gothel
Administrator
Currently used in master tip
--add-opens java.desktop/sun.awt=ALL-UNNAMED --add-opens java.desktop/sun.awt.windows=ALL-UNNAMED --add-opens java.desktop/sun.java2d=ALL-UNNAMED
The added one to have background erase working w/ AWT
https://jogamp.org/bugzilla//show_bug.cgi?id=1430#c3
--add-opens java.desktop/sun.awt.windows=ALL-UNNAMED