JAXB:在JAXB中创建Unmarshaller时抛出NullPointerException

时间:2012-04-04 10:12:00

标签: jaxb

我为我的XML创建了一个结构,以便与JAXB Unmarshalling一起使用 问题是,Unmarshaller并没有被创造出来。

JAXBContext jc =  JAXBContext.newInstance("A Fully qualified class name");
Unmarshaller um =  jc.createUnmarshaller();

java.lang.NullPointerException is being thrown at 
Unmarshaller um =  jc.createUnmarshaller();

除了java.lang.NullPointerException之外,statcktrace没有任何内容,所以也无法调试它。 有人可以告诉我如何在创建Unmarshaller期间解决这个问题吗?对于JAXB 2.0

对于refernece,这是我的Parser类

public class BADFMMessageParser  {
private static JAXBContext jc = null;
    static {
        try {
        jc = JAXBContext.newInstance("My Fully Qualified class name");
        } catch (Exception x) {
        }
    }
    public static MyClass parse(String str) throws Exception {
        Unmarshaller um = jc.createUnmarshaller();
        BADFM  badfmMessage = (BADFM) um.unmarshal(new StringReader(requestStr));
        JAXBElement<? extends MyClass> value = badfmMessage.getMessage();
        return value.getValue();
    }
}

1 个答案:

答案 0 :(得分:1)

我不确定您为什么会看到NPE,但您似乎错误地创建了JAXBContext。假设您在指定的包中有jaxb.index个文件或ObjectFactory类,则可以执行以下操作:

JAXBContext jc =  JAXBContext.newInstance("your.domain.model.package");

否则,您可以直接在课程或类上创建JAXBContext

JAXBContext jc = JAXBContext.newInstance(Foo.class,Bar.class);

jaxb.index文件示例

生成模型示例中的Bootstrap JAXBContext

来自类示例的引导句JAXBContext