MAKE IT SIMPLE
[JAXB] java.lang.IllegalArgumentException: Illegal class inheritance loop. 본문
Spring/에러 노트
[JAXB] java.lang.IllegalArgumentException: Illegal class inheritance loop.
punchlips 2021. 8. 14. 07:09이제 jaxb 작업이 익숙해졌다~ 생각해졌을 때쯤 나를 당황시킨 에러가 발생했다.. 바로 아래와 같은 에러였다.
java.lang.IllegalArgumentException: Illegal class inheritance loop.
Outer class XXX may not subclass from inner class.
우선 스키마 구조가 어떻게 되어 있었냐면
<xs:schema .... >
<xs:element name="Response">
<xs:complexType>
<xs:sequence>
<xs:element name="Response">
<xs:complexType>
.
.
.
.
.
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
위 예시처럼 상위 엘리먼트의 이름이 complextType 하위 엘리먼트의 이름과 같은 상황이였다.
<jaxb:bindings node="//xs:element[@name='Response']/xs:complexType/xs:sequence/xs:element[@name='Response']">
<jaxb:class name="ResponseElement"/>
</jaxb:bindings>
따라서 나는 고객사의 스키마를 함부로 바꿀 수는 없으니 바인딩 파일을 아래와 같이 작성했는데?
위와 같은 에러가 났던 것이었던 것 ! 분명 노드 선택은 잘 했는데... 구글링한 결과...
=> 사용자 정의 클래스(jaxb:class)를 생성하려면 xs:complexType 까지 select 해주어야 한다고 한다
<jaxb:bindings node="//xs:element[@name='Response']/xs:complexType/xs:sequence
/xs:element[@name='Response']/xs:complexType">
<jaxb:class name="ResponseElement"/>
</jaxb:bindings>
바로 이렇게!!!
아무튼 이렇게 또 한바탕 삽질을 하고 무사히 해결이 되었다..
끝!
'Spring > 에러 노트' 카테고리의 다른 글
[Spring Boot 에러] SSLHandshakeException (0) | 2021.02.02 |
---|
Comments