
728x90
1. Scouter server sh 파일을 jdk 17 로 실행시 오류
Scouter 를 사용해보는 과정에서 JDK 17 버전에서 실행이 불가능 한 것을 확인 하였고 해당 문제를 해결 하는 방법을 공유 하고자 함.
현재 개발 시 사용중인 jdk 17 에서 scouter\server 경로의 .\startcon.bat(window os에서 실행) 을 실행 시켰을 경우 아래와 같은 에러가 나옴
<Error Log>
더보기
C:\Users\parkk\OneDrive\바탕 화면\scouter-all-2.20.0\scouter\server>java -Xmx1024m -Dadd-opens=java.base/java.lang=ALL-UNNAMED -Djdk.attach.allowAttachSelf=true -classpath ./scouter-server-boot.jar scouter.boot.Boot ./lib -console
____ _
/ ___| ___ ___ _ _| |_ ___ _ __
\___ \ / __/ \| | | | __/ _ \ '__|
___) | (_| (+) | |_| | || __/ |
|____/ \___\___/ \__,_|\__\___|_|
Open Source S/W Performance Monitoring
Scouter version 2.20.0
5월 13, 2024 11:58:52 오후 com.sun.xml.bind.v2.runtime.reflect.opt.Injector <clinit>
심각: null
java.security.PrivilegedActionException: java.lang.NoSuchMethodException: sun.misc.Unsafe.defineClass(java.lang.String,[B,int,int,java.lang.ClassLoader,java.security.ProtectionDomain)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:573)
at com.sun.xml.bind.v2.runtime.reflect.opt.Injector.<clinit>(Injector.java:197)
at com.sun.xml.bind.v2.runtime.reflect.opt.AccessorInjector.prepare(AccessorInjector.java:81)
at com.sun.xml.bind.v2.runtime.reflect.opt.OptimizedAccessorFactory.get(OptimizedAccessorFactory.java:171)
at com.sun.xml.bind.v2.runtime.reflect.Accessor$FieldReflection.optimize(Accessor.java:285)
at com.sun.xml.bind.v2.runtime.property.SingleElementNodeProperty.<init>(SingleElementNodeProperty.java:94)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499)
at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480)
at com.sun.xml.bind.v2.runtime.property.PropertyFactory.create(PropertyFactory.java:128)
at com.sun.xml.bind.v2.runtime.ClassBeanInfoImpl.<init>(ClassBeanInfoImpl.java:181)
at com.sun.xml.bind.v2.runtime.JAXBContextImpl.getOrCreate(JAXBContextImpl.java:514)
at com.sun.xml.bind.v2.runtime.JAXBContextImpl.<init>(JAXBContextImpl.java:331)
at com.sun.xml.bind.v2.runtime.JAXBContextImpl.<init>(JAXBContextImpl.java:139)
at com.sun.xml.bind.v2.runtime.JAXBContextImpl$JAXBContextBuilder.build(JAXBContextImpl.java:1156)
at com.sun.xml.bind.v2.ContextFactory.createContext(ContextFactory.java:165)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:297)
at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:286)
at javax.xml.bind.ContextFinder.find(ContextFinder.java:409)
at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:721)
at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:662)
at scouter.server.Configure.<clinit>(Configure.java:78)
at scouter.server.Logger$.<init>(Logger.scala:153)
at scouter.server.Logger$.<clinit>(Logger.scala)
at scouter.server.Logger.println(Logger.scala)
at scouter.server.Main.main(Main.java:42)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at scouter.boot.Boot.main(Boot.java:45)
Caused by: java.lang.NoSuchMethodException: sun.misc.Unsafe.defineClass(java.lang.String,[B,int,int,java.lang.ClassLoader,java.security.ProtectionDomain)
at java.base/java.lang.Class.getMethod(Class.java:2227)
at com.sun.xml.bind.v2.runtime.reflect.opt.Injector$3.run(Injector.java:201)
at com.sun.xml.bind.v2.runtime.reflect.opt.Injector$3.run(Injector.java:197)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:569)
... 36 more
java -cp ./boot.jar scouter.boot.Boot [./lib]
Exception in thread "main" java.lang.NoClassDefFoundError: Could not initialize class scouter.server.Logger$
at scouter.server.Logger$$anonfun$1.apply$mcV$sp(Logger.scala:145)
at scouter.server.util.ThreadScala$$anon$1.run(ThreadScala.scala:12)
Caused by: java.lang.ExceptionInInitializerError: Exception java.lang.ExceptionInInitializerError [in thread "main"]
at scouter.server.Logger$.<init>(Logger.scala:153)
at scouter.server.Logger$.<clinit>(Logger.scala)
at scouter.server.Logger.println(Logger.scala)
at scouter.server.Main.main(Main.java:42)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at scouter.boot.Boot.main(Boot.java:45)
java.lang.ExceptionInInitializerError
at scouter.server.Logger$.<init>(Logger.scala:153)
at scouter.server.Logger$.<clinit>(Logger.scala)
at scouter.server.Logger.println(Logger.scala)
at scouter.server.Main.main(Main.java:42)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at scouter.boot.Boot.main(Boot.java:45)
Caused by: java.lang.NullPointerException: Cannot invoke "java.lang.reflect.Method.invoke(Object, Object[])" because "com.sun.xml.bind.v2.runtime.reflect.opt.Injector.defineClass" is null
at com.sun.xml.bind.v2.runtime.reflect.opt.Injector.inject(Injector.java:311)
at com.sun.xml.bind.v2.runtime.reflect.opt.Injector.inject(Injector.java:97)
at com.sun.xml.bind.v2.runtime.reflect.opt.AccessorInjector.prepare(AccessorInjector.java:87)
at com.sun.xml.bind.v2.runtime.reflect.opt.OptimizedAccessorFactory.get(OptimizedAccessorFactory.java:171)
at com.sun.xml.bind.v2.runtime.reflect.Accessor$FieldReflection.optimize(Accessor.java:285)
at com.sun.xml.bind.v2.runtime.property.SingleElementNodeProperty.<init>(SingleElementNodeProperty.java:94)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499)
at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480)
at com.sun.xml.bind.v2.runtime.property.PropertyFactory.create(PropertyFactory.java:128)
at com.sun.xml.bind.v2.runtime.ClassBeanInfoImpl.<init>(ClassBeanInfoImpl.java:181)
at com.sun.xml.bind.v2.runtime.JAXBContextImpl.getOrCreate(JAXBContextImpl.java:514)
at com.sun.xml.bind.v2.runtime.JAXBContextImpl.<init>(JAXBContextImpl.java:331)
at com.sun.xml.bind.v2.runtime.JAXBContextImpl.<init>(JAXBContextImpl.java:139)
at com.sun.xml.bind.v2.runtime.JAXBContextImpl$JAXBContextBuilder.build(JAXBContextImpl.java:1156)
at com.sun.xml.bind.v2.ContextFactory.createContext(ContextFactory.java:165)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:297)
at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:286)
at javax.xml.bind.ContextFinder.find(ContextFinder.java:409)
at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:721)
at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:662)
at scouter.server.Configure.<clinit>(Configure.java:78)
... 9 more
관련 문제를 서칭하다 페이스북 스카우터 그룹에 올라온 글을 발견함.
https://www.facebook.com/groups/scouterapm/posts/3522272424754246/
로그인 또는 가입하여 보기
Facebook에서 게시물, 사진 등을 확인하세요.
www.facebook.com
해당 문제는 agent 실행 시 에는 발생하지 않으나 server 실행은 jdk 1.8 에서만 구동되는 것으로 보임
우선 정상적인 실행을 위해선 jdk 1.8을 설치하고 startcon.bat 실행파일 옵션을 jdk 1.8 로 설정해줌.
window 에서 파일 수정 시 (powershell 이용)
notepad .\startcon.bat
위와 같이 startcon.bat 파일을 메모장으로 열어 jdk 1.8 경로를 지정
(기존)
java -Xmx512m -classpath ./scouter-server-boot.jar scouter.boot.Boot ./lib -console
(변경 - jdk 1.8 경로 지정) [ 일반적으로 윈도우에서 jdk 설치 시 위치는 C:\Program Files 에 있음 ]
"C:\Program Files\Eclipse Adoptium\jdk8u412-b08\bin\java" -Xmx1024m -classpath ./scouter-server-boot.jar scouter.boot.Boot ./lib -console
변경 사항 저장 후 다시 실행
(현재 경로)
C:\Users\parkk\OneDrive\바탕 화면\scouter-all-2.20.0\scouter\server
(server 패키지에 있는 startcon.bat 을 실행)
.\startcon.bat
정상 실행 시 다음과 같이 로그 마지막에 실행이 된 것을 확인 할 수 있음
00:12:41.874 [scouter.server.http.HttpServer] INFO org.eclipse.jetty.server.Server[444] - Started @823ms

728x90
반응형
'DailyStudy > Java' 카테고리의 다른 글
Garbage Collection(GC) (0) | 2023.10.22 |
---|---|
JVM(JavaVirtualMachine)파헤치기 (2) (1) | 2022.09.23 |
JVM(JavaVirtualMachine) 파헤치기 (1) (0) | 2022.09.22 |
객체지향 프로그래밍과 절차적프로그래밍에 대해 알아보자🕵 (0) | 2022.08.31 |