我在春季批处理中使用蓖麻的情况下,我得到了一个非常奇怪的noclassDeffoundError,以取消XML。这是我显示其他任何内容之前的堆栈跟踪:
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的整个映射定义,我也会遇到相同的错误。
我简单地将Java类重命名为大写,这可以解决问题。
这绝对是一个目前可以解决问题的技巧,但是我认为我会发布它,因此,如果有人遇到同一问题并且需要尽快使用它,他们可以应用快速修复。在接下来的几天中