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

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

Barbara Streisand
풀어 주다: 2024-11-06 00:47:02
원래의
470명이 탐색했습니다.

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿