JAXB:在JAXB中创建解组器时引发NullPointerException

JAXB:在JAXB中创建解组器时引发NullPointerException,jaxb,Jaxb,我已经为我的XML创建了一个用于JAXB解组的结构 问题是,解组器没有被创建 JAXBContext jc = JAXBContext.newInstance("A Fully qualified class name"); Unmarshaller um = jc.createUnmarshaller(); java.lang.NullPointerException is being thrown at Unmarshaller um = jc.createUnmarshaller

我已经为我的XML创建了一个用于JAXB解组的结构 问题是,解组器没有被创建

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

java.lang.NullPointerException is being thrown at 
Unmarshaller um =  jc.createUnmarshaller();
statcktrace上除了java.lang.NullPointerException之外没有其他内容,因此无法对其进行调试。 有谁能告诉我在创建解组器的过程中如何解决这个问题吗??对于JAXB2.0

对于referenece,这是我的解析器类

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();
    }
}
公共类BADFMMessageParser{
私有静态JAXBContext jc=null;
静止的{
试一试{
jc=JAXBContext.newInstance(“我的完全限定类名”);
}捕获(异常x){
}
}
公共静态MyClass解析(字符串str)引发异常{
解组器um=jc.createUnmarshaller();
BADFM badfmMessage=(BADFM)um.unmarshal(新StringReader(requestStr));

JAXBElement我不确定您为什么会看到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
关于生成的模型示例

Bootstap
JAXBContext
来自类示例


我不确定您为什么会看到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
关于生成的模型示例

Bootstap
JAXBContext
来自类示例


谢谢,我指定了确切的限定打包名称,我通过调试验证了这一点,您能告诉我这个jaxb.index是什么吗?因为ObjectFactory是由jaxb自动创建的。@yyyi777-我在回答中添加了一些示例。引发我的部分在您的帖子中,您有一个“完全限定的类名”
我想确定你指的是
“完全限定的包名”
。是的,我尝试了所有选项(所有跟踪和错误)包括包名,但我仍然得到这个NPE。你能发布异常的堆栈跟踪吗?除了这3行之外,控制台java.lang.NullPointerException上没有任何堆栈跟踪,位于com.bacs.tata.util.BADFMMessageParser.parse(BADFMMessageParser.java:26),位于com.bacs.tata.service.MyAdapter.main(MyAdapter.java:493)谢谢,我指定了确切的限定打包名称,我通过调试对此进行了验证,您能告诉我这个jaxb.index是什么吗?因为ObjectFactory是由jaxb自动创建的。@yyyi777-我在回答中添加了一些示例。引发我的部分在您的帖子中,您有一个“完全限定的类名”我想确定你指的是
“完全限定的包名”
。是的,我尝试了所有选项(所有跟踪和错误)包括包名,但我仍然得到这个NPE。你能发布异常的堆栈跟踪吗?除了这3行之外,控制台java.lang.NullPointerException上没有任何堆栈跟踪,位于com.bacs.tata.util.BADFMMessageParser.parse(BADFMMessageParser.java:26),位于com.bacs.tata.service.MyAdapter.main(MyAdapter.java:493)