【问题标题】:Using EclipseLink MOXy with Java 1.5在 Java 1.5 中使用 EclipseLink MOXy
【发布时间】:2010-10-05 15:38:49
【问题描述】:

有没有人使用 EclipseLink MOXy(我使用的是 eclipselink 2.1.0)来使用 Java 5?每当我尝试解组时,我在 startCDATA() 方法中的 org.eclipse.persistence.oxm.record.UnmarshalRecord 中得到一个空指针异常(xPathNode 为空)。完全相同的代码和 XML 在 Java6 中运行得非常好。

【问题讨论】:

  • 通过尝试解组包含 CDATA 节点但没有匹配的 java getter 和 setter 的 xml 文件,我能够始终如一地重现这一点。如果该节点不是 cdata 节点,那么一切正常,该节点只是在解组中被跳过(这是我所期望的)。这似乎只发生在 Java5 中,而不是 Java6。

标签: java jaxb eclipselink java-5 moxy


【解决方案1】:

我是 MOXy 的技术主管。您能否提供有关您的用例的堆栈跟踪和更多详细信息?

有关 MOXy 的更多信息,请查看:

您的更新:

我无法重现这一点。我正在使用以下环境。您是否有可以发送的测试用例 (blaise.doughan@gmail.com) 或指出我的不同之处?:

  • JDK:1.5.0_22
  • EclipseLink 2.1.0

以下型号:

package cdata;

import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement
public class Customer {

    private String firstName;
    private String lastName;

    public String getFirstName() {
        return firstName;
    }

    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

    public String getLastName() {
        return lastName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }

}

演示代码:

package cdata;

import java.io.File;

import javax.xml.bind.JAXBContext;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;

public class Demo {

    public static void main(String[] args) throws Exception {
        JAXBContext jc = JAXBContext.newInstance(Customer.class);

        Unmarshaller unmarshaller = jc.createUnmarshaller();
        Customer customer = (Customer) unmarshaller.unmarshal(new File("src/cdata/input.xml"));

        Marshaller marshaller = jc.createMarshaller();
        marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
        marshaller.marshal(customer, System.out);
    }
}

和 XML:

<?xml version="1.0" encoding="UTF-8"?>
<customer>
    <firstName>Jane</firstName>
    <middleName><![CDATA[<?xml version="1.0"?>]]></middleName>
    <lastName>Doe</lastName>
</customer>

【讨论】:

  • 感谢您这么快就检查出来!我实际上已经弄清楚了。我正在通过 Maven 添加 EclipseLink,并且没有添加到我的项目(或至少不是全部)中可下载的版本中包含的所需依赖项。一旦我把它修好了,一切都像魅力一样!
  • 看起来我把这个问题称为修复了...我已经在原始帖子中添加了详细信息。
  • 我还不能重现这个。我已经用我尝试过的方法更新了我的答案。您能否详细说明我可能做的与您不同的事情?
  • @bloodcell - 我无法重现此问题,也从未收到 Frothy 的回复。您使用的是哪个版本的 EclipseLink?
  • 我在 2.2.0 版本中遇到了同样的错误,在我的情况下使用 2.3.2 版本解决了。
猜你喜欢
  • 2014-12-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-09
  • 2012-10-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多