Infra

운영 반영 후 500 에러? 이너클래스 누락..

hammii 2025. 6. 22. 19:04

문제 상황

최근 운영 서버에 SI 프로젝트 코드를 반영한 뒤 화면 진입 시 아래와 같은 에러가 발생했다.

 

'페이지를 찾을 수 없습니다.'
500 Internal Server Error

 

테스트 할 때는 정상 작동 했는데, 운영 반영 후에만 오류가 발생했다.

이유는 바로 이너 클래스 누락이었다.

 

예시로 코드를 보여주자면

public class ViewerController {
    public void method() {
        Timer timer = new Timer();
        timer.schedule(new TimerTask() {
            public void run() {
                // 수행 작업
            }
        }, 1000);
    }
}

 

Java 에서는 이너 클래스(내부 클래스), 특히 익명 이너 클래스를 사용할 경우 다음과 같은 .class 파일이 생성된다.

- ViewerController.class

- ViewerController$1.class

 

그런데 운영 서버에 반영할 때 ViewerController$1.class 를 누락하면,

애플리케이션은 해당 클래스를 로딩하지 못하고 500 에러를 발생시킨다.

 

ViewerController.class 는 기존에 운영 중이었던 파일이라 변경 파일이었고,

이너 클래스 사용으로 ViewerController$1.class 가 신규 파일이었는데

사내에서 사용하고 있는 형상관리 시스템에서는 신규 파일인 ViewerController$1.class 를 함께 보여주지 않았고 (검색했을 때 안 나왔나봄 ㅠ) 따로 신규등록을 해줘야했던 것이다.. 

 

이너 클래스는 Java 에서 흔히 사용하는 패턴이지만, 운영 환경이 자동화되지 않은 경우 치명적인 장애를 유발할 수 있다.

이번 경험을 통해 "보이지 않는 클래스"도 꼭 챙기는 습관을 갖게 되었다.