Java 11软件包javax.xml.bind不存在

时间:2018-09-25 15:49:36

标签: java jaxb java-11

我正在尝试使用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 个答案:

答案 0 :(得分:85)

根据release-notes,Java 11删除了Java EE模块:

java.xml.bind (JAXB) - REMOVED
  • Java 8-确定
  • Java 9-已弃用
  • Java 10-已弃用
  • Java 11- 已删除

有关更多信息,请参见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>