JogAmp Build v2.4.0-rc-20210111

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

Re: JogAmp Build v2.4.0-rc-20210111

farrellf
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
Reply | Threaded
Open this post in threaded view
|

Re: JogAmp Build v2.4.0-rc-20210111

Xerxes Rånby
The JDK16 release has changes the default jdk setting of --illegal-access from premit to deny
https://openjdk.java.net/jeps/396

Do 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:

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


If you reply to this email, your message will be added to the discussion below:
http://forum.jogamp.org/JogAmp-Build-v2-4-0-rc-20210111-tp4040955p4041075.html
To start a new topic under general, email [hidden email]
To unsubscribe from jogamp, click here.
NAML
Reply | Threaded
Open this post in threaded view
|

Re: JogAmp Build v2.4.0-rc-20210111

gouessej
Administrator
In reply to this post by farrellf
Reply | Threaded
Open this post in threaded view
|

Re: JogAmp Build v2.4.0-rc-20210111

farrellf
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
Reply | Threaded
Open this post in threaded view
|

Re: JogAmp Build v2.4.0-rc-20210111

gouessej
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
Reply | Threaded
Open this post in threaded view
|

Re: JogAmp Build v2.4.0-rc-20210111

farrellf
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
Reply | Threaded
Open this post in threaded view
|

Re: JogAmp Build v2.4.0-rc-20210111

gouessej
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
Reply | Threaded
Open this post in threaded view
|

Re: JogAmp Build v2.4.0-rc-20210111

gouessej
Administrator
In reply to this post by farrellf
By the way, it works with Java 16.
Julien Gouesse | Personal blog | Website
Reply | Threaded
Open this post in threaded view
|

Re: JogAmp Build v2.4.0-rc-20210111

gouessej
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
Reply | Threaded
Open this post in threaded view
|

Re: JogAmp Build v2.4.0-rc-20210111

gouessej
Administrator
I can't build the master branch with Java 17:
gouessej wrote
[gouessej@localhost make (master)]$ ant -Dtarget.sourcelevel=1.8 -Dtarget.targetlevel=1.8 -Dtarget.rt.jar=/home/gouessej/Documents/installation/jdk8u302-b08/jre/lib/rt.jar
Buildfile: /home/gouessej/Documents/programmation/java/workspace/jogl/make/build.xml

jogamp.env.validation:
     [echo] ant.version                Apache Ant(TM) version 1.10.11 compiled on July 10 2021
     [echo] ant.java.version           17
     [echo] java.version               17
     [echo] java.home                  /home/gouessej/Documents/installation/jdk-17
     [echo] jvmJava.exe                /home/gouessej/Documents/installation/jdk-17/bin/java
     [echo] jvmJava8.exe               ${jvmJava8.exe}

BUILD FAILED
/home/gouessej/Documents/programmation/java/workspace/gluegen/make/jogamp-env.xml:78: Unsupported Java version: 17. Make sure that the version of Java is 1.8 or greater.

Total time: 1 second
Julien Gouesse | Personal blog | Website
Reply | Threaded
Open this post in threaded view
|

Re: JogAmp Build v2.4.0-rc-20210111

gouessej
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
Reply | Threaded
Open this post in threaded view
|

Re: JogAmp Build v2.4.0-rc-20210111

gouessej
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
Reply | Threaded
Open this post in threaded view
|

Re: JogAmp Build v2.4.0-rc-20210111

gouessej
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
Reply | Threaded
Open this post in threaded view
|

Re: JogAmp Build v2.4.0-rc-20210111

gouessej
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
Reply | Threaded
Open this post in threaded view
|

Re: JogAmp Build v2.4.0-rc-20210111

gouessej
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
Reply | Threaded
Open this post in threaded view
|

Re: JogAmp Build v2.4.0-rc-20210111

Martin
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.
Reply | Threaded
Open this post in threaded view
|

Re: JogAmp Build v2.4.0-rc-20210111

gouessej
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
Reply | Threaded
Open this post in threaded view
|

Re: JogAmp Build v2.4.0-rc-20210111

gouessej
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
Reply | Threaded
Open this post in threaded view
|

Re: JogAmp Build v2.4.0-rc-20210111

gouessej
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
12