jjazzboss / JJazzLab

A complete and open application for automatic backing tracks generation.
https://www.jjazzlab.org
GNU Lesser General Public License v2.1
409 stars 27 forks source link

Exception when importing MusicXML: superclass access check failed: class nu.xom.JDK15XML1_0Parser #295

Closed RedFerret61 closed 2 years ago

RedFerret61 commented 2 years ago

On windows running JJazzLab 3.1 (March 11, 2022) File > Import Songs open .mxl log (log2-workaround1.txt) shows ...

INFO [ImportSongAction]: importFiles() -- importerId=YamJJazz musicXML importer Importing file D:\My_Documents\paul_cucuron\bin\github\VeeHarmGen\pycharm-VeeHarmGen\output\Cairo-MadmanAcrossTheWater-Rock_Neutral-v1-100-ON_KEY_MOST-BAR1-2022_03_25-08_56_25.mxl SEVERE [org.openide.util.Exceptions] java.lang.IllegalAccessError: superclass access check failed: class nu.xom.JDK15XML1_0Parser (in unnamed module @0x16a75953) cannot access class com.sun.org.apache.xerces.internal.parsers.SAXParser (in module java.xml) because module java.xml does not export com.sun.org.apache.xerces.internal.parsers to unnamed module @0x16a75953

This is similar to https://bugs.openjdk.java.net/browse/JDK-8152901 xml.transform fails - superclass access check failed

I attempted suggested workaround, but this did not fix the problem and mxl did not load:

c:>"C:\Program Files\JJazzLab\bin\jjazzlab64.exe" -J-XaddExports:java.xml/com.sun.org.apache.xerces.internal.parsers=ALL-UNNAMED -J-XaddExports:java.xml/com.sun.org.apache.xerces.internal.util=ALL-UNNAMED

log2-workaround1.txt Cairo-MadmanAcrossTheWater-Rock_Neutral-v1-100-ON_KEY_MOST-BAR1-2022_03_25-08_56_25.zip

jjazzboss commented 2 years ago

This is due to JJazzLab now rely on JDK17 which is more secure. I updated the XOM library to the latest version and it's fixed

RedFerret61 commented 2 years ago

Thanks for the fix, jjazzboss!

While waiting for the 3.1.1 release, I have a workaround...

See:

https://github.com/RedFerret61/XML2Impro-Visor

which converts a musicxml leadsheet (single melody with harmony chord symbols) file (or files in a directory) to impro-visor style leadsheet(s) (which JJazzLab 3.1.0 can use in File > Import Songs...).