JDK 11은 NoClassDefFoundError AEM 6.5를 발생시킵니다.
AEM 6.5x를 사용하여 Java 11로 업그레이드한 후 NoClassDefFoundError 의 문제를 해결하려면 외부에서 CXF 패키지를 설치하십시오.
설명 description
AEM 6.5.x에서 Java 11로 업그레이드한 후 로그에서 아래 오류가 발견되었습니다.
15.09.2020 00:30:20.868 *ERROR* [ FelixStartLevel] org.apache.sling.scripting.sightly 번들
org.apache.sling.scripting.sightly:1.1.2.1_4_0 (557)[ org.apache.sling.scripting.sightly.impl.engine.extension.use.JavaUseProvider(3410)] : 다음 중 오류 발생
구현 개체 인스턴스화(java.lang.NoClassDefFoundError:
jdk/internal/reflect/ConstructorAccessorImpl)
java.lang.NoClassDefFoundError: jdk/internal/reflect/ConstructorAccessorImpl
at java.base/jdk.internal.misc.Unsafe.defineClass0(기본 메서드)
at java.base/jdk.internal.misc.Unsafe.defineClass(Unsafe.java:1192)
at java.base/jdk.internal.reflect.ClassDefiner.defineClass(ClassDefiner.java:63)
at java.base/jdk.internal.reflect.MethodAccessorGenerator$1.run(MethodAccessorGenerator.java:400)
at java.base/jdk.internal.reflect.MethodAccessorGenerator$1.run(MethodAccessorGenerator.java:394)
at java.base/java.security.AccessController.doPrivileged(기본 메서드)
…
원인: java.lang.ClassNotFoundException: 클래스를 로드할 수 없음
'jdk.internal.reflect.ConstructorAccessorImpl'
at org.apache.felix.framework.BundleWiringImpl$1.loadClass(BundleWiringImpl.java:91)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
위치:
org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1463)
at org.apache.felix.framework.BundleWiringImpl.access$300(BundleWiringImpl.java:79)
위치:
org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1982)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
… 111개의 공통 프레임 생략
해결 방법 resolution
이 문제는 AEM에서 CXF 패키지가 제거되어 외부에서 설치해야 하므로 발생합니다.
-
AEM을 중지합니다.
-
텍스트 편집기에서 이 파일을 찾아 엽니다. crx-quickstart/conf/sling.properties.
-
다음 줄을 수정합니다.
다음 이전
org.osgi.framework.bootdelegation=com.yourkit.*,${org.apache.sling.launcher.bootdelegation}
다음 이후org.osgi.framework.bootdelegation=sun.*,com.sun.*,jdk.internal.reflect,jdk.internal.reflect.*,com.yourkit.*,${org.apache.sling.launcher.bootdelegation}
-
AEM을 시작합니다.
참고: 이 문제에 대한 기술적인 세부 정보는 issues.apache.org의 NoClassDefFoundError: jdk/internal/reflect/ConstructorAccessorImpl with Oracle JDK 11.0.3을(를) 참조하십시오.