JDK 11 veroorzaakt NoClassDefFoundError AEM 6.5
Installeer de pakketten CXF extern om de kwestie van NoClassDefFoundError na een verbetering aan Java 11 met AEM 6.5x op te lossen.
Beschrijving description
De onderstaande fout wordt waargenomen in de logboeken na de upgrade naar Java 11 met AEM 6.5.x.
15.09.2020 00 :30: 20.868 *ERROR * [ FelixStartLevel ] org.apache.sling.scripting.sightbundle
org.apache.sling.scripting.siely:1.1.2.1_4_0 (557)[ org.apache.sling.scripting.sistrongly.impl.engine.extension.use.JavaUseProvider(3410) ] : Fout tijdens
instantie van het implementatieobject (java.lang.NoClassDefFoundError:
jdk/internal/reflect/ConstructorAccessorImpl)
java.lang.NoClassDefFoundError: jdk/internal/reflect/ConstructorAccessorImpl
op java.base/jdk.internal.misc.Unsafe.defineClass0(Native methode)
op java.base/jdk.internal.misc.Unsafe.defineClass(Unsafe.java:1192)
op java.base/jdk.internal.reflect.ClassDefiner.defineClass(ClassDefiner.java:63)
op java.base/jdk.internal.reflect.MethodAccessorGenerator$1.run(MethodAccessorGenerator.java:400)
op java.base/jdk.internal.reflect.MethodAccessorGenerator$1.run(MethodAccessorGenerator.java:394)
op java.base/java.security.AccessController.doPrivileged(Native methode)
…
Veroorzaakt door: java.lang.ClassNotFoundException: Unable to load class
'jdk.internal.reflect.ConstructorAccessorImpl'
op org.apache.felix.framework.BundleWiringImpl$1.loadClass(BundleWiringImpl.java:91)
op java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
om
org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1463)
op org.apache.felix.framework.BundleWiringImpl.access$300(BundleWiringImpl.java:79)
om
org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1982)
op java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
… 111 gemeenschappelijke frames weggelaten
Resolutie resolution
Dit probleem is ontstaan doordat CXF-pakketten uit AEM zijn verwijderd en die extern moeten worden geïnstalleerd:
-
Stop de AEM.
-
Vind en open dit dossier in een tekstredacteur: crx-quickstart/conf/sling.properties .
-
Deze regel wijzigen:
Voor
org.osgi.framework.bootDelegation=com.yourkit.*,${org.apache.sling.launcher.bootDelegation}
Naorg.osgi.framework.bootDelegatie=sun.*,com.sun.*,jdk.internal.reflect,jdk.internal.reflect.*,com.yourkit.*,${org.apache.sling.launcher.bootDelegation}
-
Start de AEM.
Nota : Zie NoClassDefFoundError: jdk/internal/reflect/ConstructorAccessorImpl met Oracle JDK 11.0.3 op issues.apache.org voor technische details over deze kwestie.