XML 배치를 해제하기 위해 Spring Batch 내부의 Castor를 사용하여 매우 이상한 NoClassDefFoundError를 얻고 있습니다.NoClassDefFoundError castor unmarshalling 사용
java.lang.NoClassDefFoundError: com/example/test/STLTRANSACTIONINFO (wrong name: com/example/test/StlTransactionInfo)
at java.lang.ClassLoader.defineClass1(Native Method) ~[na:1.7.0_21]
at java.lang.ClassLoader.defineClass(ClassLoader.java:791) ~[na:1.7.0_21]
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) ~[na:1.7.0_21]
at java.net.URLClassLoader.defineClass(URLClassLoader.java:449) ~[na:1.7.0_21]
at java.net.URLClassLoader.access$100(URLClassLoader.java:71) ~[na:1.7.0_21]
at java.net.URLClassLoader$1.run(URLClassLoader.java:361) ~[na:1.7.0_21]
at java.net.URLClassLoader$1.run(URLClassLoader.java:355) ~[na:1.7.0_21]
at java.security.AccessController.doPrivileged(Native Method) ~[na:1.7.0_21]
at java.net.URLClassLoader.findClass(URLClassLoader.java:354) ~[na:1.7.0_21]
at java.lang.ClassLoader.loadClass(ClassLoader.java:423) ~[na:1.7.0_21]
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) ~[na:1.7.0_21]
at java.lang.ClassLoader.loadClass(ClassLoader.java:356) ~[na:1.7.0_21]
그것은 예외가 몇 가지 이유가 모두 대문자로 내 클래스 이름을 찾고한다는 것을 나에게 보인다,하지만 그것을 "이름을 잘못 말할 때 : 나는 무엇을 보여 전에 다음 스택 추적입니다 : "그것은 적절한 클래스 이름을 가지고 있습니다.
<!DOCTYPE mapping PUBLIC "-//EXOLAB/Castor Mapping DTD Version 1.0//EN" "http://castor.org/mapping.dtd">
<mapping>
<class name="com.example.test.ExtResponseTransaction">
<map-to xml="EXTRESPONSETRANSACTION" />
</class>
<class name="com.example.test.StlTransactionInfo">
<map-to xml="STLTRANSACTIONINFO" />
<field name="keyTranID" type="string">
<bind-xml name="KEYTRANID" node="element"/>
</field>
</class>
<class name="com.example.test.StlTransactionData">
<map-to xml="STLTRANSACTIONDATA"/>
<field name="responseString" type="string">
<bind-xml name="RESPONSE" node="element"/>
</field>
</class>
<class name="com.example.test.CSIDResponse">
<map-to xml="RESPONSE"/>
</class>
</mapping>
어떤 아이디어 :
여기 내 매핑 파일입니까? StlTransactionInfo에 대한 전체 매핑 정의에 주석을 추가하더라도 동일한 오류가 발생합니다.
NoClassDefFoundError에서 잘못된 이름의 메시지를 본 유일한 경우는 소스 코드가 패키지되어 있지만 컴파일 된 클래스가 패키지 선언을 반영하는 디렉토리에 존재하지 않는 경우입니다. jar 파일의 내부 또는 com/example/test /가 있고 컴파일 된 클래스가있는 앱의 빌드 경로를 확인해야합니다. –
입력 해 주셔서 감사합니다. 여기서는 대소 문자를 구분하지 않습니다. 디렉토리 구조가 패키지 구조와 일치하는지 확인했습니다. – Dave4988
편집을보고 maven에서 생성 된 jar 파일을 다시 확인하면 클래스가 올바른 위치에 있습니다. – Dave4988