这个问题在这里已有答案:
-
How to resolve java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException in Java 9 19个答案
-
Replacements for deprecated JPMS modules with Java EE APIs 4个答案
我正在尝试使用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
我该如何解决这个问题?
1 回答
根据release-notes,Java 11删除了Java EE模块:
Java 8 - 好的
Java 9 - 已弃用
Java 10 - 已弃用
Java 11 - 删除
有关详细信息,请参阅JEP 320 .
您可以使用备用版本的Java EE技术来解决此问题 . 只需添加包含所需类的Maven依赖项: