728x90

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
반응형
복사했습니다!