jide-oss
jide-oss copied to clipboard
JDK10: sun.swing.CachedPainter class inaccessible
If I run my application with java web start on Oracle JDK10, I got the following exception (Meta L&F) when a CheckBoxTree is displayed:
java.lang.IllegalAccessError: superclass access check failed: class com.jidesoft.plaf.metal.MetalUtils$GradientPainter (in unnamed module @0x32990607) cannot access class sun.swing.CachedPainter (in module java.desktop) because module java.desktop does not export sun.swing to unnamed module @0x32990607
at java.base/java.lang.ClassLoader.defineClass1(Native Method)
at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1009)
at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:174)
at jdk.deploy@10/com.sun.deploy.security.DeployURLClassLoader.defineClass(DeployURLClassLoader.java:390)
at jdk.deploy@10/com.sun.deploy.security.DeployURLClassLoader$1.run(DeployURLClassLoader.java:289)
at jdk.deploy@10/com.sun.deploy.security.DeployURLClassLoader$1.run(DeployURLClassLoader.java:283)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at jdk.deploy@10/com.sun.deploy.security.DeployURLClassLoader.findClass(DeployURLClassLoader.java:282)
at jdk.javaws@10/com.sun.jnlp.JNLPClassLoader.findClass(JNLPClassLoader.java:382)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:566)
at jdk.javaws@10/com.sun.jnlp.JNLPClassLoader.loadClass(JNLPClassLoader.java:136)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:499)
at com.jidesoft.plaf.metal.MetalUtils.drawGradient(MetalUtils.java:95)
at com.jidesoft.plaf.metal.MetalIconFactory$CheckBoxIcon.paintOceanIcon(MetalIconFactory.java:63)
at com.jidesoft.plaf.metal.MetalIconFactory$CheckBoxIcon.paintIcon(MetalIconFactory.java:87)
at java.desktop/javax.swing.plaf.metal.MetalRadioButtonUI.paint(MetalRadioButtonUI.java:226)
at java.desktop/javax.swing.plaf.ComponentUI.update(ComponentUI.java:161)
at java.desktop/javax.swing.JComponent.paintComponent(JComponent.java:797)
I tried the recommended add-exports and it fixed the problem but I can not ask my users to do so: javaws -J--add-exports=java.desktop/sun.swing=ALL-UNNAMED -verbose http://www.jmmc.fr/apps/public/AppLauncher/AppLauncher.jnlp
Do you plan to fix the GradientPainter ( extends CachedPainter ) in com.jidesoft.plaf.metal.MetalUtils or have any other workaround ?