JDK 11 verursacht NoClassDefFoundError AEM 6.5

Installieren Sie die CXF-Pakete extern, um das Problem des NoClassDefFoundError nach einer Aktualisierung auf Java 11 mit AEM 6.5x zu beheben.

Beschreibung description

Der folgende Fehler tritt in den Protokollen nach der Aktualisierung auf Java 11 mit AEM 6.5.x auf.

15.09.2020 00:30:20.868 *ERROR* [ 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)]: Fehler während
Instanziierung des Implementierungsobjekts (java.lang.NoClassDefFoundError:
jdk/internal/mirror/ConstructorAccessorImpl)
java.lang.NoClassDefFoundError: jdk/internal/mirror/ConstructorAccessorImpl
      unter java.base/jdk.internal.misc.Unsafe.defineClass0(Native Methode)
      unter java.base/jdk.internal.misc.Unsafe.defineClass(Unsafe.java:1192)
      unter java.base/jdk.internal.mirror.ClassDefiner.defineClass(ClassDefiner.java:63)
      unter java.base/jdk.internal.mirror.MethodAccessorGenerator$1.run(MethodAccessorGenerator.java:400)
      unter java.base/jdk.internal.mirror.MethodAccessorGenerator$1.run(MethodAccessorGenerator.java:394)
      unter java.base/java.security.AccessController.doPrivileged(Native Methode)

Ursache: java.lang.ClassNotFoundException: Klasse kann nicht geladen werden
„jdk.internal.mirror.ConstructorAccessorImpl“
     unter org.apache.felix.framework.BundleWiringImpl$1.loadClass(BundleWiringImpl.java:91)
     unter java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
     um
org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1463)
      unter org.apache.felix.framework.BundleWiringImpl.access$300(BundleWiringImpl.java:79)
      um
org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1982)
      unter java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
… 111 gemeinsame Rahmen weggelassen

Auflösung resolution

Dieses Problem ist darauf zurückzuführen, dass CXF-Pakete aus AEM entfernt wurden und extern installiert werden müssen:

  1. Stoppen Sie die AEM.

  2. Suchen und öffnen Sie diese Datei in einem Texteditor: crx-quickstart/conf/sling.properties.

  3. Diese Zeile ändern:
    Vorher
    org.osgi.framework.BootDelegation=com.meinekit.*,

    ${org.apache.sling.launcher.BootDelegation}
    Nachher

    org.osgi.framework.BootDelegation=sun.*,com.sun.*,jdk.internal.mirror,jdk.internal.mirror.*,com.meinekit.*,${org.apache.sling.launcher.BootDelegation}

  4. Starten Sie die AEM.

Hinweis: Siehe NoClassDefFoundError: jdk/internal/mirror/ConstructorAccessorImpl with Oracle JDK 11.0.3 auf issues.apache.org für technische Details zu diesem Problem.

recommendation-more-help
3d58f420-19b5-47a0-a122-5c9dab55ec7f