参见英文答案 > How to resolve java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException in Java 9 23个
> Replacements for deprecated JPMS modules with Java EE APIs 7个
我正在尝试使用JAXB将XML数据反序列化为Java内容树,验证XML数据,因为它是未编组的:
try {
JAXBContext context = JAXBContext.newInstance("com.acme.foo");
Unmarshaller unmarshaller = context.createUnmarshaller();
unmarshaller.setSchema(schema);
FooObject fooObj = (FooObject) unmarshaller.unmarshal(new File("foo.xml"));
} catch (UnmarshalException ex) {
ex.printStackTrace();
} catch (JAXBException ex) {
ex.printStackTrace();
}
当我使用Java 8构建项目时,它很好,但使用Java 11构建它失败并出现编译错误:
package javax.xml.bind does not exist
我该如何解决这个问题?
解决方法:
根据release-notes,Java 11删除了Java EE模块:
java.xml.bind (JAXB) - REMOVED
> Java 8 – 好的
> Java 9 – 已弃用
> Java 10 – 已弃用
> Java 11 –
REMOVED
有关详细信息,请参阅JEP 320.
您可以使用备用版本的Java EE技术来解决此问题.只需添加包含所需类的Maven依赖项:
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.3.0</version>
</dependency>
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-core</artifactId>
<version>2.3.0</version>
</dependency>
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-impl</artifactId>
<version>2.3.0</version>
</dependency>
标签:java-11,java,jaxb 来源: https://codeday.me/bug/20190918/1810733.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。