728x90
ERROR
Type definition error: [simple type, class kr.---.---_open_api.dto.--DTO$Process]
🔹 simple type → Jackson이 복잡한 타입으로 인식하지 못했다는 뜻
- 즉, 이 클래스(Process)를 직렬화/역직렬화 가능한 구조체로 판단하지 못했다는 것
- 왜 못했냐? 바로 👇
🔹 ---DTO$Process → 내부 클래스 (non-static inner class)
- $ 기호는 Java 컴파일러가 **내부 클래스(inner class)**를 표시할 때 사용하는 표기법
- 즉, Process가 ---DTO 안의 static이 없는 내부 클래스라는 뜻이에요
🧠 Jackson 입장에서는?
Jackson이 new Process()를 하려고 하는데,
내부 클래스는 외부 클래스의 인스턴스 없이 단독으로 생성할 수 없기 때문에 실패합니다.
💡내부 클래스는 외부 클래스의 인스턴스 없이 단독으로 생성할 수 없기 때문에 실패
✅ 먼저, 내부 클래스란?
public class Outer { public class Inner { public void sayHello() { System.out.println("Hi from Inner!"); } } }
😮 그런데 이렇게는 안 돼요
Outer.Inner inner = new Outer.Inner(); // ❌ 오류 발생!
왜냐하면 Inner는 Outer의 인스턴스에 종속된 클래스이기 때문이에요. 즉, Outer 객체가 먼저 있어야 Inner를 만들 수 있어요.
✅ 정답은 이거:
Outer outer = new Outer(); Outer.Inner inner = outer.new Inner(); // ✔️ 이렇게 해야 생성 가능
즉,
Inner는 Outer 안에 "붙어있는 객체"이기 때문에 Outer 객체가 없으면 존재할 수가 없음 그래서 Jackson이 new Inner()를 하려고 하면 실패하는 거예요. 😵
✅ 그럼 어떻게 해결?
클래스를 static으로 만들면 됩니다.
public static class Inner { ... }
이제는 이렇게 생성 가능해요:
Outer.Inner inner = new Outer.Inner(); // ✔️ OK!
왜냐면 static은 외부 클래스에 종속되지 않음 → 그냥 일반 클래스처럼 독립적으로 동작함.
🔥 Jackson과 관련지어 보면
static 없는 내부 클래스 → 외부 클래스가 있어야 생성됨 → Jackson이 못 만듦 → 500 에러 static 있는 내부 클래스 → 독립적 생성 가능 → Jackson이 OK
💡 한 줄 요약
일반 내부 클래스는 바깥 클래스 인스턴스를 통해서만 생성 가능 → Jackson은 자동 생성할 수 없기 때문에 실패함.
Jackson에서의 simple type이란?
"단순한 타입"을 의미하는 것이 아니라, "더 이상 내부 구조가 없는 타입"이라는 뜻이다.
더 자세히 말하자면 "내부에 필드가 없거나, 직렬화할 수 없는 구조가 아니라서 더 이상 분석할 수 없는 타입"이라는 뜻이다.
⚠️ 여기서 말하는 simple type = Jackson이 무지한 타입
| 우리가 생각하는 의미 | Jackson에서의 의미 |
| String, int 같은 단순 타입 | OK (직렬화 가능) |
| 구조가 있는 복잡한 객체 | OK (클래스 정보 다 있으면) |
| 구조를 알 수 없는 클래스 (ex. static 없는 내부 클래스) | ❌ simple type → 더 이상 파싱 안 됨 |
해결
용어의미
| simple type | Jackson이 내부 구조를 알 수 없는 타입이라고 판단한 것 |
| 왜 발생? | 내부 클래스에 static이 안 붙어서 생성 불가 / 필드 접근 불가 |
| 실제 문제 | Jackson은 내부 필드를 직렬화하고 싶은데, 시작점조차 잡지 못함 |
728x90
'Project > 에러해결' 카테고리의 다른 글
| [ERROR]SQL Server에서 "Collation conflict" 오류 해결하기 (0) | 2025.06.18 |
|---|---|
| Java UnsupportedOperationException 오류 해결 (1) | 2025.04.24 |
| [ERROR] Module already exists (1) | 2025.02.16 |
| [ERROR] com.mongodb.MongoCommandException: Command failed with error 18 (AuthenticationFailed): 'Authentication failed.' (0) | 2024.09.06 |
| [ERROR] Gateway와 User-Service 간 네트워크 문제 해결 및 Docker 설정 방법 (0) | 2024.09.03 |