>  기사  >  Java  >  JAXB를 사용할 때 Java 11에서 "javax.xml.bind가 존재하지 않습니다" 오류를 해결하는 방법은 무엇입니까?

JAXB를 사용할 때 Java 11에서 "javax.xml.bind가 존재하지 않습니다" 오류를 해결하는 방법은 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-11-06 00:47:02360검색

How to Resolve the

Java 11에는 javax.xml.bind 패키지가 없습니다

JAXB를 사용하여 XML 데이터를 구문 분석하고 인증하는 경우:

<code class="java">JAXBContext context = JAXBContext.newInstance("com.acme.foo");
Unmarshaller unmarshaller = context.createUnmarshaller();
unmarshaller.setSchema(schema);
FooObject fooObj = (FooObject) unmarshaller.unmarshal(new File("foo.xml"));</code>

Java 8을 기반으로 이 코드는 정상적으로 실행되지만 Java 11에서는 다음과 같은 컴파일 오류가 발생합니다.

package javax.xml.bind does not exist

해결 방법

릴리스 노트에 따르면 Java 11에서는 이 문제의 원인이 되는 javax.xml.bind(JAXB)를 포함한 Java EE 모듈을 제거했습니다.

이 문제를 해결하려면 Java EE 기술의 대체 버전을 사용해야 합니다. 필요한 클래스가 포함된 Maven 종속성을 추가하면 됩니다.

<code class="xml"><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></code>

Jakarta EE 8 업데이트( 2020년 3월)

이제 이전 JAXB 모듈을 Jakarta EE 8의 Jakarta XML 바인딩으로 교체할 수 있습니다.

<code class="xml"><dependency>
  <groupId>jakarta.xml.bind</groupId>
  <artifactId>jakarta.xml.bind-api</artifactId>
  <version>2.3.3</version>
</dependency>
<dependency>
  <groupId>com.sun.xml.bind</groupId>
  <artifactId>jaxb-impl</artifactId>
  <version>2.3.3</version>
  <scope>runtime</scope>
</dependency></code>

Jakarta EE 9 업데이트(2020년 11월) 월)

최신 버전의 Jakarta XML Binding 3.0 사용:

<code class="xml"><dependency>
  <groupId>jakarta.xml.bind</groupId>
  <artifactId>jakarta.xml.bind-api</artifactId>
  <version>3.0.0</version>
</dependency>
<dependency>
  <groupId>com.sun.xml.bind</groupId>
  <artifactId>jaxb-impl</artifactId>
  <version>3.0.0</version>
  <scope>runtime</scope>
</dependency></code>

참고: Jakarta EE 9에서는 새로운 API 패키지 네임스페이스 jakarta를 채택합니다. xml.bind.*, import 문을 업데이트하세요.

<code class="java">javax.xml.bind -> jakarta.xml.bind</code>

Jakarta EE 10 업데이트(2022년 6월)

최신 버전의 Jakarta XML Binding 4.0을 사용하세요. (Java SE 11 이상이 필요함):

<code class="xml"><dependency>
  <groupId>jakarta.xml.bind</groupId>
  <artifactId>jakarta.xml.bind-api</artifactId>
  <version>4.0.0</version>
</dependency>
<dependency>
  <groupId>com.sun.xml.bind</groupId>
  <artifactId>jaxb-impl</artifactId>
  <version>4.0.0</version>
  <scope>runtime</scope>
</dependency></code>

위 내용은 JAXB를 사용할 때 Java 11에서 "javax.xml.bind가 존재하지 않습니다" 오류를 해결하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.