28 juillet 2023

OpenHR, HRaSpace, 4You eDSN evMedia ne démarrent pas & Java - ZipException: Invalid CEN header

Alban m'informe que suite à un upgrade Java les applicatifs HR (Web, OpenHR) comme Karaf (4You, eDSN 9.0, evMedia, simulateur M2M) peuvent se trouver bloqués au démarrage.

Exemple de message dans le Karaf.log :

SEVERE: Could not launch framework
java.lang.RuntimeException: Error installing bundle listed in startup.properties with url: mvn:org.apache.karaf.features/org.apache.karaf.features.core/4.3.7 and sta
        at org.apache.karaf.main.Main.installAndStartBundles(Main.java:613)
        at org.apache.karaf.main.Main.launch(Main.java:308)
        at org.apache.karaf.main.Main.main(Main.java:183)
        at com.soprahr.evm.main.Main.main(Main.java:130)
Caused by: org.osgi.framework.BundleException: Unable to cache bundle: mvn:org.apache.karaf.features/org.apache.karaf.features.core/4.3.7
        at org.apache.felix.framework.Felix.installBundle(Felix.java:3231)
        at org.apache.felix.framework.BundleContextImpl.installBundle(BundleContextImpl.java:147)
        at org.apache.karaf.main.Main.installAndStartBundles(Main.java:606)
        ... 3 more
Caused by: java.util.zip.ZipException: Invalid CEN header (invalid zip64 extra data field size)
        at java.base/java.util.zip.ZipFile$Source.zerror(ZipFile.java:1730)
        at java.base/java.util.zip.ZipFile$Source.checkExtraFields(ZipFile.java:1262)


Ceci est lié à un nouveau contrôle réalisé par les JVM des derniers updates Java 11 ou 17 de juillet 2023.

java -version

openjdk version "11.0.20" 2023-07-18 LTS
OpenJDK Runtime Environment (Red_Hat-11.0.20.0.8-1) (build 11.0.20+8-LTS)
OpenJDK 64-Bit Server VM (Red_Hat-11.0.20.0.8-1) (build 11.0.20+8-LTS, mixed mode, sharing)

ou

java version "17.0.8" 2023-07-18 LTS
Java(TM) SE Runtime Environment (build 17.0.8+9-LTS-211)
Java HotSpot(TM) 64-Bit Server VM (build 17.0.8+9-LTS-211, mixed mode, sharing)


Pour inhiber ce contrôle il est nécessaire d'ajouter à la ligne de commande Java (en général via la variable JAVA_OPTS ou EXTRA_JAVA_OPTS dans le script setenv) le paramètre suivant :

-Djdk.util.zip.disableZip64ExtraFieldValidation=true