Linux 서버에서 java.lang.NoClassDefFoundError: sun/awt/X11GraphicsEnvironment 에러날때


개발환경인 윈도우에서는 쌩쌩 잘 돌아가던게 리눅스 서버에 올리고 이것저것 해 보다보니


java.lang.NoClassDefFoundError: sun/awt/X11GraphicsEnvironment 요런 에러가 났다.



처음에는 JDK 버전이 후져서 그런가 했더니, 알고보니 리눅스 환경 때문에 나는 에러 같았다.(정확히는 잘 모름. 영어가 후달려서)


나의 경우 Thumbnailator 라는 라이브러리로 이미지 썸네일을 맹글었는데 요기서 에러가 발생했다.


아무튼 리눅스 서버든 유닉스 서버든 java.lang.NoClassDefFoundError: sun/awt/X11GraphicsEnvironment 요게 뽀잉 뜰때 에러를 해결할려면


시스템 프로퍼티 java.awt.headless 요걸 true 로 설정해 주면 된다.



톰캣같은 경우는 catalina.sh 파일 제일 위에다 요렇게 추가 시키고 ps -eaf | grep java 로 확인해 보면 -Djava.awt.headless=true 요렇게 추가돼 있다.

CATALINA_OPTS="-Djava.awt.headless=true"


제우스 같은 경우는 (내가 배포해야 되는 WAS 가 제우스기 때문에 -_-)


config 디렉토리 디벼보면 JEUSMain.xml 파일이 있는데 요걸 바로 수정해 주거나 아니면 webadmin 을 이용해서 수정해 주면 된다.

<jeus-system xmlns="http://www.tmaxsoft.com/xml/ns/jeus">
	<node>
	    ...
	    ...
		<engine-container>
			<name>testContainer</name>
			<id>121</id>
			<base-port>11011</base-port>
			<command-option>-Xms256m -Xmx512m -Djava.awt.headless=true</command-option>
			<engine-command>
				<type>servlet</type>
				<name>test</name>
			</engine-command>
			<sequential-start>true</sequential-start>
		</engine-container>
		...
		...
</jeus-system>



죠렇게 command-option 에다 추가할것들 추가해 주거나, webadmin 화면에서 할려면 요렇게 해도 결과적으로는 똑같다.


※ 설정을 바꿨으면 WAS 를 리스탓트 해줘야 된다.


리스탓트 후 다시 해보면 기가 막히게 다시 잘된다. 잇힝