- java.desktop/sun.awt
- java.desktop/sun.java2d
- java.desktop/com.sun.java.swing.plaf.motif
- java.desktop/com.apple.eawt
"IllegalAccessError" when I call MATLAB Compiler SDK Java library with Java 17 and versions above
7 views (last 30 days)
Show older comments
MathWorks Support Team
on 10 Apr 2024
Edited: MathWorks Support Team
on 11 Apr 2024
I compiled my MATLAB function to a Java package with MATLAB Compiler SDK. When I call the package against Java 17 or versions above 17 runtime, the application fails with error below or similar.
"java.lang.IllegalAccessError: superclass access check failed".
For example, when I call a Java package that compiled the MATLAB plot function, I receive error:
Exception in thread "AWT-EventQueue-0": java.lang.IllegalAccessError: superclass access check failed: class com.mathworks.hg.peer.types.HGMotifCheckMenuUI (in unnamed module @0x6eb317bb) cannot access class com.sun.java.swing.plaf.motif.MotifMenuUI (in module java.desktop) because module java.desktop does not export com.sun.java.swing.plaf.motif to unnamed module @0x6eb317bb
Accepted Answer
MathWorks Support Team
on 11 Apr 2024
Edited: MathWorks Support Team
on 11 Apr 2024
This error is due to encapsulation barriers introduced by the module system in Java, particularly for reflection-based access by libraries and frameworks. MathWorks' Java code accesses some non-public fields and methods of java.* packages.
To workaround the issue, please specify --add-opens option with the module and package name mentioned in the error message at runtime. For above example error message, the module is "java.desktop" and package is "com.sun.java.swing.plaf.motif". So the java command is
java -classpath .;"matlabroot\toolbox\javabuilder\jar\javabuilder.jar";.\<yourCompiledLibrary>.jar --add-opens java.desktop/com.sun.java.swing.plaf.motif=ALL-UNNAMED <yourJavaApp>
You can have multiple --add-opens options. Below packages are what we have discovered so far that may trigger this error. But this is not an exhaustive list.
To open all these packages, you can use below command:
java -classpath .;"matlabroot\toolbox\javabuilder\jar\javabuilder.jar";.\<yourCompiledLibrary>.jar --add-opens java.desktop/sun.awt=ALL-UNNAMED --add-opens java.desktop/sun.java2d=ALL-UNNAMED --add-opens java.desktop/com.sun.java.swing.plaf.motif=ALL-UNNAMED --add-opens java.desktop/com.apple.eawt=ALL-UNNAMED <yourJavaApp>
0 Comments
More Answers (0)
See Also
Categories
Find more on Java Package Integration in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!