Le JDK 11 entraîne l’erreur NoClassDefFoundError dans AEM 6.5.

Installez les packages CXF en externe pour résoudre le problème NoClassDefFoundError après une mise à niveau vers Java 11 avec AEM 6.5x.

Description description

L’erreur ci-dessous est observée dans les journaux après la mise à niveau vers Java 11 avec AEM 6.5.x.

15.09.2020 00:30:20.868 *ERREUR* [ FelixStartLevel] org.apache.sling.scripting.sightly bundle
org.apache.sling.scripting.sightly:1.1.2.1_4_0 (557)
[ org.apache.sling.scripting.sightly.impl.engine.extension.use.JavaUseProvider(3410)] : erreur pendant
instanciation de l’objet d’implémentation (java.lang.NoClassDefFoundError :
jdk/internal/reflet/ConstructorAccessorImpl)
java.lang.NoClassDefFoundError : jdk/internal/translate/ConstructorAccessorImpl
      à java.base/jdk.internal.misc.Unsafe.defineClass0(Méthode native)
      à java.base/jdk.internal.misc.Unsafe.defineClass(Unsafe.java:1192)
      à java.base/jdk.internal.reflet.ClassDefiner.defineClass(ClassDefiner.java:63)
      à java.base/jdk.internal.reflet.MethodAccessorGenerator$1.run(MethodAccessorGenerator.java:400)
      à java.base/jdk.internal.reflet.MethodAccessorGenerator$1.run(MethodAccessorGenerator.java:394)
      à java.base/java.security.AccessController.doPrivileged(Native Method)

Cause : java.lang.ClassNotFoundException : impossible de charger la classe
‘jdk.internal.reflet.ConstructorAccessorImpl’
     at org.apache.felix.framework.BundleWeringImpl$1.loadClass(BundleWritingImpl.java:91)
     à java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
     à
org.apache.felix.framework.BundleWeringImpl.findClassOrResourceByDelegation(BundleWritingImpl.java:1463)
      à org.apache.felix.framework.BundleWeringImpl.access$300(BundleWritingImpl.java:79)
      à
org.apache.felix.framework.BundleWeringImpl$BundleClassLoader.loadClass(BundleWeringImpl.java:1982)
      à java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
… 111 images communes omises

Résolution resolution

Ce problème est dû au fait que les packages CXF ont été supprimés d’AEM et qu’ils doivent être installés en externe :

  1. Arrêtez AEM.

  2. Recherchez et ouvrez ce fichier dans un éditeur de texte : .

  3. Modifiez cette ligne :
    Avant org.osgi.framework.bootdelegation=com.yourkit.*,

    {org.apache.sling.launcher.bootdelegation} $
    Après

    org.osgi.framework.bootdelegation=sun.*,com.sun.*,jdk.internal.reflect,jdk.internal.reflect.*,com.yourkit.*,${org.apache.sling.launcher.bootdelegation}

  4. Démarrez AEM.

Remarque : voir NoClassDefFoundError: jdk/internal/reflect/ConstructorAccessorImpl avec le JDK Oracle 11.0.3 sur issues.apache.org pour obtenir des détails techniques sur ce problème.

recommendation-more-help
experience-cloud-kcs-help-kbarticles