Java 11 包 javax.xml.bind 不存在
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/52502189/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Java 11 package javax.xml.bind does not exist
提问by Boris
I'm trying to deserialize XML data into a Java content tree using JAXB, validating the XML data as it is unmarshalled:
我正在尝试使用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();
}
When I build the project with Java 8it's fine, but building it with Java 11fails with a compilation error:
当我使用Java 8构建项目时它很好,但是使用Java 11构建它失败并出现编译错误:
package javax.xml.bind does not exist
How do I fix the issue?
我该如何解决这个问题?
采纳答案by Boris
According to the release-notes, Java 11 removed the Java EE modules:
根据发行说明,Java 11 删除了 Java EE 模块:
java.xml.bind (JAXB) - REMOVED
- Java 8 - OK
- Java 9 - DEPRECATED
- Java 10 - DEPRECATED
- Java 11 - REMOVED
- Java 8 - 好的
- Java 9 - 已弃用
- Java 10 - 已弃用
- Java 11 - 删除
See JEP 320for more info.
有关更多信息,请参阅JEP 320。
You can fix the issue by using alternate versions of the Java EE technologies. Simply add Maven dependencies that contain the classes you need:
您可以使用 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>
Jakarta EE 8 update (Mar 2020)
Jakarta EE 8 更新(2020 年 3 月)
Instead of using old JAXB modules you can fix the issue by using Jakarta XML Bindingfrom Jakarta EE 8:
而不是使用旧JAXB模块,您可以通过使用修复问题雅加达XML绑定从雅加达EE 8:
<dependency>
<groupId>jakarta.xml.bind</groupId>
<artifactId>jakarta.xml.bind-api</artifactId>
<version>2.3.3</version>
</dependency>