`unnamed module` 오류는 “같은 클래스가 서로 다른 ClassLoader에서 로드될 때”
Object res = httpClient.call(); // 다른 ClassLoader에서 로드된 DTO
MyDto dto = (MyDto) res; // 💥 여기서 터짐
java.lang.ClassCastException: class com.app.MyDto cannot be cast to class com.app.MyDto (com.app.MyDto is in unnamed module of loader 'app'; com.app.MyDto is in unnamed module of loader org.springframework.boot.loader.LaunchedURLClassLoader)
| 클래스 | ClassLoader |
| MyDto (내 코드) | AppClassLoader |
| MyDto (jar 안 jar) | LaunchedURLClassLoader |
myapp.jar
└─ BOOT-INF/
├─ classes/ ← 내 프로젝트 클래스
│ com/app/MyDto.class
└─ lib/
common.jar ← 또 MyDto가 들어 있음
| 위치 | ClassLoader |
| BOOT-INF/classes | AppClassLoader (또는 RestartClassLoader) |
| BOOT-INF/lib/*.jar | LaunchedURLClassLoader |
서로 다른 ClassLoader면 같은 이름이어도 다른 클래스로 취급한다.
'WEB개발 > Spring' 카테고리의 다른 글
| Actuator (0) | 2026.01.22 |
|---|---|
| [Spring] 주석3 (Annotation, DTO) (0) | 2026.01.15 |
| AOP @Cacheable @CacheEvict (0) | 2026.01.12 |
| @Transactional (Propagation) (0) | 2025.12.12 |
| [Spring] Request를 처리하는 주석 (Annotation) (0) | 2025.02.21 |