Rumah >Java >javaTutorial >Pelaksanaan jaxb-api tidak ditemui pada laluan modul atau laluan kelas. Penyelesaian Ralat
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
dependency:tree
atau Gradle dependencies
Maven untuk mengesahkan bahawa versi pustaka JAXB yang betul disertakan. 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!