본문 바로가기
Trouble Shooting

[JAVA] java.lang.NoClassDefFoundError: Could not initialize class java.awt.GraphicsEnvironment$LocalGE

by Lynnet 2024. 5. 3.
728x90

리눅스 서버에서 

java.lang.NoClassDefFoundError: Could not initialize class java.awt.GraphicsEnvironment$LocalGE

이러한 에러가 났다. 

 

찾다보니 JAVA_OPTS에 설정값이 누락되어서 일어난 에러였다. 

설정값은 두가지 방법으로 추가할 수 있다. 

 

1. 자바 코드에서 추가하는 경우 

서버 기동시 실행되는 클래스에 추가하는 방법

System.setProperty("java.awt.headless", "true")

(기동될때 실행되는 클래스들은 web.xml 에서 listener, filter 등 등록되어있는 class 들에 해당) 

 

2. 서버(tomcat)에 직접 추가하는 경우 

보통 ssh 에서 apache-tomcat-8.5.9/bin (tomcat 경로는 설정마다 다름) 에 catalina.sh 가 실행되면서 tomcat 이 올라가는 건데 보통 옵션들은 catalina.sh 에 추가해도 무방하지만 setenv.sh 에 추가하는 것이 났다. 

기본적으로 catalina.sh 에는 setenv.sh 파일을 읽을 수 있도록 설정되어 있기 때문에 만약 bin 폴더 안에 setenv.sh 가 없다면 만들고 그 안에 아래와 같은 옵션값을 추가하면 된다.

export JAVA_OPTS="-Djava.awt.headless=true"

 

 


<참고>

https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=rutee9&logNo=130109088347

https://recordsoflife.tistory.com/1266

—JVM 옵션 관련

https://nesoy.github.io/articles/2019-08/JVM-Options

728x90
반응형