- Today
- Total
Notice
Recent Posts
Recent Comments
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| 16 | 17 | 18 | 19 | 20 | 21 | 22 |
| 23 | 24 | 25 | 26 | 27 | 28 | 29 |
| 30 | 31 |
Tags
- 트러블슈팅
- 백엔드
- sql
- 이클립스
- 프로시저
- PDO
- iframe
- url파라미터
- MariaDB
- 클론코딩
- 오블완
- javascript
- 엘리멘터
- 티스토리챌린지
- Hostinger
- mysqli
- 쿼리개선
- TIL
- 의존성주입
- 환경세팅
- 오류해결
- 워드프레스
- 비주얼코드
- 코덱스
- PLSQL
- 오라클
- 워스프레스
- Oracle
- dbeaver
- spring boot
Archives
개발 공부중
[error] Could not initialize class sun.awt.X11GraphicsEnvironment 오류 해결 본문
SPRING BOOT
[error] Could not initialize class sun.awt.X11GraphicsEnvironment 오류 해결
개발자 leelee 2026. 5. 22. 22:10
1. 문제상황
spring 을 사용하는 화면들에서만 엑셀 다운로드시 아무 반응이 없었다.
관련 코드 반영한 건 한참 전...
운영만 안되고 개발은 또 됨
2. 오류확인
브라우저 콘솔 : 500 Internal Server Error
tomcat 로그 :
Handler dispatch failed; nested exception is
java.lang.NoClassDefFoundError: Could not initialize class sun.awt.X11GraphicsEnvironment
3. 에러 흐름 확인
엑셀 다운로드 클릭
↓
SXSSFWorkbook.createSheet()
↓
Apache POI가 엑셀 시트 생성하면서 기본 글자 너비 계산 시도
↓
서버의 폰트/X11 그래픽 환경 초기화 실패
↓
500 에러
4. 원인 파악
Apache POI + SXSSFWorkbook + 폰트 계산 때문에 터진 것
찾아보니 apache POI가 엑셀 컬럼 너비를 계산하다가 기본 글자 폭을 계산하는 과정에서 서버의 폰트 정보를 읽으려고 했고,
이 과정에서 Java의 AWT 그래픽 환경이 초기화 됐다.
하지만 운영 서버는 일반적으로 GUI 환경이 없는 리눅스 서버이기 때문에 X11GraphicsEnvironment 초기화에 실패했다.
Spring Boot 애플리케이션은 실행 시 내부적으로 java.awt.headless=true 속성을 기본값으로 자동 설정하는데
환경설정이 뭔가 초기화 된 거 같았다.
5. 해결방법
톰캣을 사용하고 있다면,
tomcat/bin/catalina.sh 파일 제일 위에 아래 코드를 넣어주면 된다. 그리고 톰캣 재기동
#!/bin/bash #맨 윗줄
export CATALINA_OPTS="$CATALINA_OPTS -Djava.awt.headless=true" #입력
JVM에게 "이 서버는 모니터 화면이 없는(Headless) 환경이니, 화면 출력 시스템(X11)을 찾지 말고 메모리 상에서 자체적으로 폰트 크기만 계산해라"라고 지시하여 에러를 우회한 것
(참고)
vi catalina.sh #vi 편집기로 셸 파일 열기
파일 수정 후-> esc -> :wq! -> enter #vi 편집기 저장
바로 해결됐다.
끝
'SPRING BOOT' 카테고리의 다른 글
| [Spring] 의존성 주입(DI) 방식 비교와 빈(Bean) 충돌 해결하기 (0) | 2026.01.25 |
|---|---|
| [Spring] 컴포넌트 스캔 @ComponentScan @Filter @Autowired (0) | 2026.01.18 |
| [IntelliJ] 단위 테스트 생성 방법 (ctrl + shift + t ) (0) | 2023.08.17 |
| [Spring Boot] JUnit 테스트 클래스 예제 (0) | 2023.08.07 |
Comments
