Rumah >Java >javaTutorial >Pelaksanaan jaxb-api tidak ditemui pada laluan modul atau laluan kelas. Penyelesaian Ralat

Pelaksanaan jaxb-api tidak ditemui pada laluan modul atau laluan kelas. Penyelesaian Ralat

Barbara Streisand
Barbara Streisandasal
2025-01-21 08:07:10228semak imbas

Implementation of jaxb-api has not been found on module path or classpath. Error Solution

Aplikasi Java mungkin menghadapi ralat berikut apabila menggunakan Java Architecture for XML Binding (JAXB):

<code>javax.xml.bind.JAXBException: Implementation of JAXB-API has not been found on module path or classpath.
- with linked exception:
[java.lang.ClassNotFoundException: com.sun.xml.internal.bind.v2.ContextFactory]</code>

Ralat ini biasanya disebabkan oleh tiada kelas pelaksanaan JAXB dalam laluan kelas projek, terutamanya apabila dijalankan pada Java 9 dan ke atas.

Analisis Masalah

Bermula dengan Java 9, API JAXB telah ditamatkan dan dialih keluar daripada laluan kelas lalai. Pada Java 11, ia telah dialih keluar sepenuhnya daripada JDK. Oleh itu, aplikasi yang bergantung pada JAXB perlu secara eksplisit menyertakan perpustakaan JAXB yang diperlukan dalam tetapan projek mereka.

Penyelesaian

Untuk menyelesaikan isu ini, anda perlu memasukkan kebergantungan JAXB yang sepadan dalam projek anda. Langkah tepat bergantung pada alat binaan dan tetapan projek anda.

1. Projek Maven

Tambah kebergantungan berikut pada fail pom.xml anda:

<code class="language-xml"><dependencies>
    <dependency>
        <groupId>jakarta.xml.bind</groupId>
        <artifactId>jakarta.xml.bind-api</artifactId>
        <version>3.0.0</version>
    </dependency>
    <dependency>
        <groupId>org.glassfish.jaxb</groupId>
        <artifactId>jaxb-runtime</artifactId>
        <version>3.0.0</version>
    </dependency>
</dependencies></code>

Kebergantungan ini termasuk API JAXB dan pelaksanaan masa jalannya, memastikan aplikasi anda mempunyai akses kepada kelas yang diperlukan semasa masa jalan.

2. Projek Gradle

Sertakan yang berikut dalam fail build.gradle anda:

<code class="language-gradle">dependencies {
    // JAXB API
    implementation 'jakarta.xml.bind:jakarta.xml.bind-api:3.0.0'
    // JAXB Runtime Implementation
    implementation 'org.glassfish.jaxb:jaxb-runtime:3.0.0'
}</code>

Konfigurasi ini akan menyelesaikan JAXBException dengan menambahkan perpustakaan JAXB yang diperlukan pada projek anda.

Pelaksanaan alternatif

Jika anda lebih suka menggunakan pelaksanaan JAXB lain, seperti EclipseLink MOXy, anda boleh memasukkan kebergantungannya:

Maven:

<code class="language-xml"><dependencies>
    <dependency>
        <groupId>jakarta.xml.bind</groupId>
        <artifactId>jakarta.xml.bind-api</artifactId>
        <version>3.0.0</version>
    </dependency>
    <dependency>
        <groupId>org.eclipse.persistence</groupId>
        <artifactId>org.eclipse.persistence.moxy</artifactId>
        <version>3.0.0</version>
    </dependency>
</dependencies></code>

Gradle:

<code class="language-gradle">dependencies {
    // JAXB API
    implementation 'jakarta.xml.bind:jakarta.xml.bind-api:3.0.0'
    // EclipseLink MOXy Implementation
    implementation 'org.eclipse.persistence:org.eclipse.persistence.moxy:3.0.0'
}</code>

Konfigurasi MOXy

Apabila menggunakan EclipseLink MOXy, JAXBContextFactory mesti dinyatakan untuk menggunakan pelaksanaannya. Cipta fail jaxb.properties dalam pakej yang sama dengan kelas domain anda dengan kandungan berikut:

<code class="language-properties">jakarta.xml.bind.context.factory=org.eclipse.persistence.jaxb.JAXBContextFactory</code>

Konfigurasi ini mengarahkan JAXB untuk menggunakan EclipseLink MOXy sebagai pelaksanaannya.

Petua penyahpepijatan umum

  • Semak Versi Java: Pastikan anda mengetahui versi Java projek anda dan keserasiannya dengan perpustakaan JAXB yang disertakan.
  • Gunakan alat pengurusan pergantungan: Gunakan tugas dependency:tree atau Gradle dependencies Maven untuk mengesahkan bahawa versi pustaka JAXB yang betul disertakan.
  • Isu Laluan Kelas: Sahkan bahawa laluan kelas anda mengandungi perpustakaan JAXB yang diperlukan semasa masa jalan.

Ringkasan

Ralat "Pelaksanaan JAXB-API tidak ditemui" ialah ralat biasa apabila berhijrah ke versi Java yang lebih baharu. Dengan menyertakan kebergantungan JAXB yang diperlukan secara eksplisit dan memastikan konfigurasi yang betul, anda boleh menyelesaikan isu ini dan memastikan keserasian dengan persekitaran Java moden.

Atas ialah kandungan terperinci Pelaksanaan jaxb-api tidak ditemui pada laluan modul atau laluan kelas. Penyelesaian Ralat. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn