Heim >Java >javaLernprogramm >Wie behebe ich den Fehler „javax.xml.bind existiert nicht' in Java 11 bei Verwendung von JAXB?

Wie behebe ich den Fehler „javax.xml.bind existiert nicht' in Java 11 bei Verwendung von JAXB?

Barbara Streisand
Barbara StreisandOriginal
2024-11-06 00:47:02449Durchsuche

How to Resolve the

Das Paket javax.xml.bind existiert in Java 11 nicht

Bei Verwendung von JAXB zum Parsen und Authentifizieren von XML-Daten:

<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>

Basierend auf Java 8 läuft dieser Code einwandfrei, aber in Java 11 tritt der folgende Kompilierungsfehler auf:

package javax.xml.bind does not exist

Workaround

Den Versionshinweisen zufolge entfernte Java 11 Java EE-Module, einschließlich javax.xml.bind (JAXB), was dieses Problem verursachte.

Um dieses Problem zu beheben, müssen Sie eine alternative Version der Java EE-Technologie verwenden. Fügen Sie einfach eine Maven-Abhängigkeit hinzu, die die erforderlichen Klassen enthält:

<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 Update ( 2020 März 2020)

Sie können jetzt das alte JAXB-Modul durch Jakarta XML Binding in Jakarta EE 8 ersetzen:

<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 Update (November 2020) Monat)

Verwenden Sie die neueste Version von 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>

Hinweis: Mit Jakarta EE 9 wird der neue API-Paket-Namespace jakarta übernommen. xml.bind.*, bitte aktualisieren Sie die Importanweisung:

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

Jakarta EE 10 Update (Juni 2022)

Verwenden Sie die neueste Version von Jakarta XML Binding 4.0 (erfordert Java SE 11 oder höher):

<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>

Das obige ist der detaillierte Inhalt vonWie behebe ich den Fehler „javax.xml.bind existiert nicht' in Java 11 bei Verwendung von JAXB?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn