ㅋ. 몇년만에 휴가도 다녀오고 기분좋게 출근했더니 그동안 잘 나오던 jfreechart로 만든 페이지에서 차트가 나오질 않아

로그를 확인해보았더니

java.lang.NoClassDefFoundError: Could not initialize class org.jfree.chart.JFreeChart..어쩌구저ㅉ구

라는 에러문구를 확인할 수 있었다.

당연히 클래스파일을 찾지 못하는 거라 해당 클래스파일을 누군가 지웠나 하면서 확인해보았는데

이잉? jar 파일은 그대로 lib폴더에 있는게 아닌가..

다른 서버 설정이 바뀌었나 싶어 다른 직원들에게 물어봐도 손댄것은 없댄다.

당연 저문구로는 클래스파일을 못찾아서 나오는 거니 아무리 구글 검색을 해봐도 답변은 lib 밑에 관련jar파일을 넣으라는 말뿐..

웹서버까지도 다시 깔아보았지만 마찬가지...미친다...

최후의 수단 각 라인단위로 로그를 찍어보는 막가파 디버깅..

그러던차에 ChartFactory에서 차트를 생성하기 전단계에서 Could not initialize class sun.awt.X11GraphicsEnvironment

라는 문구를 찾아내었다.

X11이란건 리눅스에서 그래픽환경을 지원하는 것이라고 알고 있었는데 이게 왜 나온걸일까..

결국 환경설정문제였던 거같다.

역시 잘 운영되고 바꾼사람 없는 시스템에서 아무도 몰래 시스템 혼자서 설정이 변경되는 미스테리한 일을 또한번 경험하고 말았다.

 

여하튼 에러는 X11이 없는 리눅스 콘솔에서 발생하는 문제이기 때문에 간단히 java 실행시 headless 모드로 구동하면 끝.

아니면 라이브러리를 지정해도 된다. 환경설정파일에 CLASSPATH로 지정해도 상관없다.

방법 : java -Djava.awt.headless=true 

 

일단 간단하게 웹서버 구동시 -Djava.awt.headless=true 라는 옵션을 추가한후 재구동하는 것으로 해결..

(전에 어떤 분이 어느파일을 손보면 되는지 물어보신 분이 계셔서 톰캣인 경우 톰캣설치폴더 밑에 있는 bin 디렉토리의

catalina.sh 파일을 보면 옵션 설정하는 부분이 나오는데 그곳에 추가하면 된다.)

 

위 옵션은 java 1.4 이상에서고 그 외에는

http://products.davisor.com/chart/doc/headless.html 페이지를 참고하면 될듯..
 
참고로 라이브러리를 지정하고자 하는 경우에는 -Djava.library.path=/usr/local/lib 를 추가하면 된다.
 
 
 
블로그 이미지

시반

시반(詩伴)이란 함께 시를 짓는 벗이란 뜻을 가지고 있습니다. 함께 나눌수 있는 그런 공간이길 바라며...

카테고리

분류 전체보기 (233)
개발 이야기 (73)
WEB2.0 (57)
DB2 (24)
MySQL (6)
오라클 (26)
기타 (44)
취미 (0)
잡담 (2)