728x90
이관 작업중에 이런 에러가 발생해서 상당히 당혹스러웠던 경우가 있어 정리해본다.
[I001] Control Module loading complete.
WARNING: Failed to load the specified log manager class org.jboss.logmanager.LogManager
Exception in thread "main" java.lang.NoClassDefFoundError: org.jboss.logmanager.log4j.BridgeRepositorySelector
at org.jboss.as.server.Main.main(Main.java:73)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:95)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:56)
at java.lang.reflect.Method.invoke(Method.java:620)
at org.jboss.modules.Module.run(Module.java:260)
at org.jboss.modules.Main.main(Main.java:291)
Caused by: java.lang.ClassNotFoundException: org.jboss.logmanager.log4j.BridgeRepositorySelector
at java.net.URLClassLoader.findClass(URLClassLoader.java:666)
at java.lang.ClassLoader.loadClassHelper(ClassLoader.java:773)
at java.lang.ClassLoader.loadClass(ClassLoader.java:746)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:336)
at java.lang.ClassLoader.loadClass(ClassLoader.java:727)
at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:395)
at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:120)
이게 당시의 문제와 동일한 로그는 아니지만, caused by: java.lang.ClassNotFoundException: org.jboss.logmanager
이 에러는 맞길래 일단 이걸 가지고 설명을 진행한다.
우선 환경 자체는 env.sh 내부에, jboss.modules.system.pkgs 로 선언되는 자바 변수가 있는데,
여기에 org.jboss.logmanager가 설정되어 있었다.
근데 AS-IS 장비에서는 올라가 있는데, TO-BE로 옮기려는 상황에서 기동할려니 ClassNotFoundException이 발생하는 것이다.
그래서 검색을 진행했고 해결법 자체는 다음과 같았다. [7.4 버전은 아래의 설정으로 조치가 완료]
[env.sh 내부에 아래의 세 줄을 추가]
JAVA_OPTS="$JAVA_OPTS -Djava.util.logging.manager=org.jboss.logmanager.LogManager"
JAVA_OPTS="$JAVA_OPTS -Xbootclasspath/p:$JBOSS_HOME/modules/system/layers/base/org/jboss/logmanager/main/jboss-logmanager-<version>.jar"
JAVA_OPTS="$JAVA_OPTS -Djboss.modules.system.pkgs=org.jboss.byteman,org.jboss.logmanager"
근데 이걸 했는데도 동작을 안한다...
근데 또 조사를 해보니 다음과 같은 내용이 있었다.
jboss eap 에 대해서 패치를 진행한 경우에는 ${JBOSS_HOME}/modules/system/layers/base/.overlays/layer-base-jboss-eap~ 경로가 있고, 이 경로에 있는 logmanager.jar 파일을 JAVA_OPTS 상에 입력해줘야 했던 것이다.
그래서 최종적으로는 다음과 같이 수정하였다.
[EAP 7.2 버전]
[env.sh 내부에 아래의 세 줄을 추가]
JAVA_OPTS="$JAVA_OPTS -Djava.util.logging.manager=org.jboss.logmanager.LogManager"
JAVA_OPTS="$JAVA_OPTS -Xbootclasspath/p:$JBOSS_HOME/modules/system/layers/base/.overlays/layer-base-jboss-eap-7.2.9.CP/org/jboss/logmanager/main/jboss-logmanager-2.1.15.Final-redhat-00001.jar
JAVA_OPTS="$JAVA_OPTS -Djboss.modules.system.pkgs=org.jboss.byteman,org.jboss.logmanager"
'WAS > JBoss&WildFly' 카테고리의 다른 글
| [JBoss EAP 7] character encoding for decoding the URL parameters (0) | 2025.07.08 |
|---|---|
| [JBoss EAP 7.4] Thread Pool 설정 관련 정리 (1) | 2025.06.30 |
| [JBoss EAP 7] unescape code 관련 지원 (0) | 2025.04.29 |
| [JBossEAP 7.4] 데이터소스 현황 체크 용 쉘 (0) | 2024.12.17 |
| [JBoss EAP 7.4] Stuck Thread 로깅 설정 (0) | 2024.12.11 |