java - 使用 Castor 解码时出现 NoClassDefFoundError

标签 java spring-batch unmarshalling castor

我在 Spring Batch 中使用 Castor 解码 XML 时遇到了一个非常奇怪的 NoClassDefFoundError 错误。在展示其他内容之前,这是堆栈跟踪:

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]

在我看来,异常(exception)情况是由于某种原因它正在寻找所有大写字母的我的类名,但是当它说“错误的名称:”时它有正确的类名。

这是我的映射文件:

<!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 类重命名为全部大写,这样就成功了。

这绝对是一个目前有效的解决方案,但我想我应该发布它,这样如果有人遇到同样的问题并且需要它尽快工作,他们可以应用快速修复。在接下来的几天里,我将尝试找出真正的根本原因,如果发现任何问题,我将更新答案。

关于java - 使用 Castor 解码时出现 NoClassDefFoundError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21243838/

相关文章:

java.net.SocketException : Unrecognized Windows Sockets error: 0: JVM_Bind (JBOSS)

java - 以多线程方式浏览Jms Queue

java - 使用 itemReader Spring Batch 读取 XML 中节点的属性

xml - 使用 JAXB 解码 XML 文档的单个元素

java - 如何在 android 中加载 5 行 5 列顶 View 的 Sprite 表?

java - 在 Spring Batch 中使用采用参数的查询

java - 如何在 Android 31 : permission denied 中通过 ffmpeg 操作文件

Spring作业启动器无法访问服务

arrays - 戈朗 :How to parse/unmarshal/decode a json array API response?

java - JAXB:将具有不同属性的多个元素解码到同一 java 类中的单独字段中