JAXBException:没有给出包名

时间:2017-07-18 15:03:24

标签: java eclipse jaxb

用于XML文件解析我正在使用JAXB,但在编译之后报告错误

<script async custom-element="amp-bind" src="https://cdn.ampproject.org/v0/amp-bind-0.1.js"></script>

代码如下:

javax.xml.bind.JAXBException: No package name is given
at javax.xml.bind.ContextFinder.find(Unknown Source)
at javax.xml.bind.JAXBContext.newInstance(Unknown Source)
at javax.xml.bind.JAXBContext.newInstance(Unknown Source)
at javax.xml.bind.JAXBContext.newInstance(Unknown Source)
at searchAlgo.Question.<init>(Question.java:16)

我是否需要安装JAXB插件? 我正在使用jdk 1.8.0_91和eclipse mars

2 个答案:

答案 0 :(得分:1)

JAXBContext.newInstance()需要Class或package名称。由于s是String,因此它被解释为包名。但是你的String是空的,所以你得到&#34;没有给出包名&#34;

答案 1 :(得分:1)

您的问题是您没有正确使用JAXB。

首先,

JAXBContext jaxbContext = JAXBContext.newInstance(s);

是错误的,因为JAXBContext.newInstance(...)期待一个班级或&#34;根据 documentation

分隔包含架构派生类和/或完全限定JAXB注释类&#34; 的java包名称

重点是确定JAXB正在处理什么类型的对象。换句话说,它将是C:\\Users\\Username\\Documents\\levels.xml XML文件中的对象。

其次,

如果你想从XML文件中解组对象或将对象编组为String,我建议你阅读以下文档,其中有很多例子: