2014-01-20 7 views
3

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에 대한 전체 매핑 정의에 주석을 추가하더라도 동일한 오류가 발생합니다.

+1

NoClassDefFoundError에서 잘못된 이름의 메시지를 본 유일한 경우는 소스 코드가 패키지되어 있지만 컴파일 된 클래스가 패키지 선언을 반영하는 디렉토리에 존재하지 않는 경우입니다. jar 파일의 내부 또는 com/example/test /가 있고 컴파일 된 클래스가있는 앱의 빌드 경로를 확인해야합니다. –

+0

입력 해 주셔서 감사합니다. 여기서는 대소 문자를 구분하지 않습니다. 디렉토리 구조가 패키지 구조와 일치하는지 확인했습니다. – Dave4988

+0

편집을보고 maven에서 생성 된 jar 파일을 다시 확인하면 클래스가 올바른 위치에 있습니다. – Dave4988

답변

0

간단히 Java 클래스의 이름을 모두 대문자로 바꿨습니다.

이것은 지금 당장 트릭을하는 해킹 솔루션이지만, 누군가가 같은 문제에 빠져서 빨리 작동해야하는 경우 빠른 수정을 적용 할 수 있도록 게시 할 것이라고 생각했습니다. 다가오는 날에 나는 진정한 근본 원인을 찾기 위해 노력할 것이고, 무엇이라도 발견하면 대답을 업데이트 할 것이다.