编程语言
首页 > 编程语言> > Java 11包javax.xml.bind不存在

Java 11包javax.xml.bind不存在

作者:互联网

参见英文答案 > 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