Java.lang.NoClassDefFoundError විසඳන්නේ කෙසේද: javaax / xml / bind / JAXBException ජාවා 9 හි


880

ජාවා 6/7/8 හි JDK හි කොටසක් ලෙස ලබා දී ඇති JAXB API පන්ති භාවිතා කරන කේත කිහිපයක් මා සතුව ඇත. මම එකම කේතය ජාවා 9 සමඟ ධාවනය කරන විට, ධාවන වේලාවේදී මට JAXB පන්ති සොයාගත නොහැකි බව පෙන්වන දෝෂ ඇතිවේ.

ජාවා 6 සිට JDX හි කොටසක් ලෙස JAXB පන්ති ලබා දී ඇත, එබැවින් ජාවා 9 තවදුරටත් මෙම පන්ති සොයාගත නොහැක්කේ ඇයි?


2
මෙම පිළිතුරේ අතිරේක කොටස මෙම API වල සංක්‍රමණයට අදාළ වේ.
නාමන්

8
ජාවා 8 සමඟ ගොඩනැඟීමෙන් ඔබේ කේතය ඔව් සම්පාදනය කිරීමට ලැබෙනු ඇත, නමුත් ඔබ එම සම්පාදිත කේතය ජාවා 9+ මත ධාවනය කිරීමට උත්සාහ කරන විට එය අසාර්ථක වනුයේ ජැක්ස්-බී නොමැති නිසාය.
ඇන්ඩි ගයිබර්ට්

1
ජාවා 11 සඳහා, මෙම ලිපියේ විසඳුම යාවත්කාලීන ය: crunchify.com/java-11-and-javax-xml-bind-jaxbcontext
එරික් වැන්ග්

Answers:


1295

JAXB API ජාවා ඊඊ ඒපීඅයි ලෙස සලකනු ලබන අතර එබැවින් ජාවා එස්ඊ 9 හි සුපුරුදු පන්ති පථයේ තවදුරටත් අඩංගු නොවේ. ජාවා 11 හි ඒවා ජේඩීකේ වෙතින් සම්පූර්ණයෙන්ම ඉවත් කරනු ලැබේ.

ජාවා 9 මොඩියුලවල සංකල්ප හඳුන්වා දෙන අතර පෙරනිමියෙන් java.seසමස්ත මොඩියුලය පන්තියේ මාවතේ ඇත (හෝ ඒ වෙනුවට මොඩියුල-මාර්ගය). නමට අනුව, සම්ප්‍රදායිකව ජාවා 6/7/8 සමඟ බැඳී ඇති ජාවා ඊඊ ඒපීඅයි java.seසමස්ත මොඩියුලයට ඇතුළත් නොවේ .

වාසනාවකට මෙන්, JDK 6/7/8 හි සපයා ඇති මෙම ජාවා ඊඊ ඒපීඅයි තවමත් ජේඩීකේ තුළ ඇත, නමුත් ඒවා පෙරනිමියෙන් පන්ති මාවතේ නොමැත. අමතර ජාවා ඊඊ ඒපීඅයි පහත දැක්වෙන මොඩියුලවල දක්වා ඇත:

java.activation
java.corba
java.transaction
java.xml.bind  << This one contains the JAXB APIs
java.xml.ws
java.xml.ws.annotation

ඉක්මන් හා අපිරිසිදු විසඳුම: (JDK 9/10 පමණි)

JAXB API ක්‍රියාත්මක වන වේලාවේදී ලබා ගැනීමට, පහත දැක්වෙන විධාන රේඛා විකල්පය සඳහන් කරන්න:

--add-modules java.xml.bind

නමුත් මට තවමත් ජාවා 8 සමඟ වැඩ කිරීමට මෙය අවශ්‍යයි !!!

ඔබ --add-modulesපැරණි JDK සමඟ සඳහන් කිරීමට උත්සාහ කළහොත් , එය හඳුනා නොගත් විකල්පයක් නිසා එය පුපුරා යනු ඇත. විකල්ප දෙකෙන් එකක් මම යෝජනා කරමි:

  1. JDK_JAVA_OPTIONSපරිසර විචල්‍යය භාවිතා කර ඔබට ඕනෑම ජාවා 9+ පමණක් විකල්පයන් සැකසිය හැකිය . මෙම පරිසර විචල්‍යය ජාවා 9+ සඳහා දියත් කරන්නා විසින් ස්වයංක්‍රීයව කියවනු ලැබේ java.
  2. -XX:+IgnoreUnrecognizedVMOptionsජේවීඑම් පුපුරවා හැරීම වෙනුවට හඳුනා නොගත් විකල්ප නිහ ly ව නොසලකා හැරීමට ඔබට එකතු කළ හැකිය . නමුත් පරෙස්සම් වන්න! ඔබ භාවිතා කරන වෙනත් විධාන රේඛා තර්ක තවදුරටත් JVM විසින් වලංගු නොවේ. මෙම විකල්පය Oracle / OpenJDK මෙන්ම IBM JDK (JDK 8sr4 අනුව) සමඟ ක්‍රියා කරයි.

විකල්ප ඉක්මන් විසඳුම: (JDK 9/10 පමණි)

--add-modules java.se.eeවිකල්පය සඳහන් කිරීමෙන් ඔබට ඉහත සියලුම ජාවා ඊඊ මොඩියුලයන් ධාවන වේලාවේදී ලබා ගත හැකි බව සලකන්න . මෙම java.se.eeමොඩියුලය ඇතුළත් වී තිබෙන බව සමස්ත ලය java.se.eeමෙන්ම ජාවා EE API මොඩියුල ඉහත. සටහන, මෙය ජාවා 11 හි ක්‍රියා නොකරන්නේ ජාවා 11java.se.ee හි ඉවත් කළ බැවිනි .


නිසි දිගුකාලීන විසඳුම: (JDK 9 සහ ඉන් ඔබ්බට)

ඉහත ලැයිස්තුගත කර ඇති ජාවා ඊඊ ඒපීඅයි මොඩියුල සියල්ලම සලකුණු කර @Deprecated(forRemoval=true)ඇත්තේ ඒවා ජාවා 11 හි ඉවත් කිරීමට සැලසුම් කර ඇති බැවිනි . එබැවින් ප්‍රවේශය තවදුරටත් ජාවා 11 හි ක්‍රියාත්මක නොවනු ඇත.--add-module

ඔබට ජාවා 11 සහ ඉදිරියට කළ යුතු වන්නේ පංතියේ හෝ මොඩියුලයේ මාර්ගයේ ජාවා ඊඊ ඒපීඅයි වල පිටපතක් ඇතුළත් කිරීමයි. උදාහරණයක් ලෙස, ඔබට මේ වගේ මාවන් පරායත්තතාවයක් ලෙස JAX-B API එකතු කළ හැකිය:

<!-- API, java.xml.bind module -->
<dependency>
    <groupId>jakarta.xml.bind</groupId>
    <artifactId>jakarta.xml.bind-api</artifactId>
    <version>2.3.2</version>
</dependency>

<!-- Runtime, com.sun.xml.bind module -->
<dependency>
    <groupId>org.glassfish.jaxb</groupId>
    <artifactId>jaxb-runtime</artifactId>
    <version>2.3.2</version>
</dependency>

JAXB පිළිබඳ වැඩි විස්තර සඳහා JAXB යොමු ක්‍රියාත්මක කිරීමේ පිටුව බලන්න .

ජාවා මොඩියුලරිටි පිළිබඳ සම්පූර්ණ විස්තර සඳහා, JEP 261: මොඩියුල පද්ධතිය බලන්න

Gradle හෝ Android Studio සංවර්ධකයා සඳහා: (JDK 9 සහ ඉන් ඔබ්බට)

ඔබගේ build.gradleගොනුවට පහත පරායත්තතා එක් කරන්න :

dependencies {
    // JAX-B dependencies for JDK 9+
    implementation "jakarta.xml.bind:jakarta.xml.bind-api:2.3.2"
    implementation "org.glassfish.jaxb:jaxb-runtime:2.3.2"
}

8
එබැවින් ජාවා ඊඊ ඒපීඅයි මොඩියුලයන් අවලංගු කර ඇති බව සලකුණු කළහොත් එයින් අදහස් කරන්නේ ජාවා 10 හි ජාවා 10 හි ධාවන වේලාවේදී තවදුරටත් ලබා ගත නොහැකි වනු ඇති බවයි? එය පසුපසට පියවරක් සේ පෙනේ. JAXB යැපීමක් ලෙස ඇතුළත් කිරීමේ පූර්ව 6 භාවිතයට අපට ආපසු යාමට සිදුවනු ඇත.
මයිකල්

4
සංක්‍රමණ මාර්ගෝපදේශයට අනුව --add-modules java.se.ee හෝ --add-modules ALL-SYSTEM වැඩ කිරීම සඳහා නිර්දේශ නොකරයි docs.oracle.com/javase/9/ කොටස යටතේ සංක්‍රමණය කරන්න මොඩියුල ජාවා ඊඊ සමඟ බෙදාගෙන නැත පෙරනිමියෙන් විසඳා ඇත -> ලක්ෂ්‍යය 1
යන්තම්

6
ජාවා 10 නිල වශයෙන් නිකුත් කිරීමත් සමඟ, ඇඩ්-මොඩියුල ක්‍රමය තවමත් ක්‍රියාත්මක වන බව අපට තහවුරු කළ හැකිය. මෙම javax.xml.bindසහ වෙනත් JavaEE පන්ති අනුව, ජාවා 11 ඉවත් කිරීම සඳහා සැලසුම් කර තිබේ JEP-320 .
ජෝප් වයිජර්ස්

10
දැන් ජාවා 11 නිකුත් කර java.se.eeමොඩියුලය ඉවත් කර ඇති බැවින් --add-modulesවිසඳුම තවදුරටත් ක්‍රියාත්මක නොවේ. ඒ වෙනුවට නිර්දේශිත විසඳුම භාවිතා කරන්න: වෙනම පරායත්තතාවයක් ලෙස JAXB එක් කරන්න.
ජෙස්පර්

14
මම මෙම පරායත්තයන් එකතු කර ඇති අතර එය තවමත් මට එම දෝෂය ලබා දෙයි. කිසියම් අදහසක් ඇයි?
ජොආනෝ වීරා

275

මගේ නඩුවේ (වසන්ත ඇරඹුම් මේද භාජනය) මම පහත සඳහන් දෑ pom.xml වෙත එක් කරමි.

<dependency>
    <groupId>javax.xml.bind</groupId>
    <artifactId>jaxb-api</artifactId>
    <version>2.3.1</version>
</dependency>

11
යොමු කිරීම සඳහා පමණක් github.com/spring-projects/spring-boot/wiki/…
Tuno

9
මේ ආකාරයට ශ්‍රේණියේ යැපීම එකතු කිරීම මට ප්‍රයෝජනවත් විය testCompile('javax.xml.bind:jaxb-api').
pamcevoy

5
Ampamcevoy සඳහන් කළ පරිදි, වසන්ත බූට් භාවිතා කරන විට jaxb-api හි අනුවාදය සඳහන් කිරීම අවශ්‍ය නොවේ. Boot අනුවාදය ස්වයංක්‍රීයව කළමනාකරණය කරයි.
මාසෙල් ඕවර්ඩිජ්

3
<scope>runtime</scope>එවැනි අවස්ථාවකට භාවිතා කිරීමට මම යෝජනා කරමි
ව්ලැඩ්ස්


71

මෑත කාලීන JDK 9.0.1 හි මෙම විසඳුම් කිසිවක් මට හොඳින් ක්‍රියාත්මක නොවීය.

නිසි ක්‍රියාකාරීත්වයක් සඳහා මෙම පරායත්තතා ලැයිස්තුව ප්‍රමාණවත් බව මට පෙනී ගියේය , එබැවින් ඔබට නිශ්චිතව සඳහන් කිරීමට අවශ්‍ය නැත--add-module (එය මෙම පරායත්තයන්ගේ pom හි නිශ්චිතව දක්වා ඇතත්). ඔබට අවශ්‍ය එකම පරායත්තතා ලැයිස්තුව සඳහන් කිරීම:

<dependencies>
    <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-impl</artifactId>
        <version>2.3.0</version>
    </dependency>
    <dependency>
        <groupId>org.glassfish.jaxb</groupId>
        <artifactId>jaxb-runtime</artifactId>
        <version>2.3.0</version>
    </dependency>
    <dependency>
        <groupId>javax.activation</groupId>
        <artifactId>activation</artifactId>
        <version>1.1.1</version>
    </dependency>
</dependencies>

2
JDK 8 සඳහා, ඉහළින් jaxb-core සහ jaxb-impl ඉවත් කරන්න.
foo

3
N අනිල් මෙය pom.xmlමාවන් වින්‍යාසයේ ගොනුවකි. එය කුමක්දැයි ඔබ නොදන්නේ නම්, හිඟාකෑමෙන් ආරම්භ කිරීම වඩා හොඳය
ඇන්ඩ්‍රෙමොනි

8
නීති විරෝධී පරාවර්තක ප්‍රවේශ මෙහෙයුමක් සිදුවී ඇත අවවාදයයි: com.sun.xml.bind.v2.runtime.reflect.opt.Injector විසින් නීති විරෝධී පරාවර්තක ප්‍රවේශය (ගොනුව: / C: /Users/eis/.m2/repository/com/sun/ xml / bind / jaxb-impl / 2.3.0 / jaxb-impl-2.3.0.jar) ක්‍රමයට java.lang.ClassLoader.defineClass (java.lang.String, byte [], int, int) අනතුරු ඇඟවීම: කරුණාකර සලකා බලන්න com.sun.xml.bind.v2.runtime.reflect.opt.Injector අනතුරු ඇඟවීම: තවදුරටත් නීති විරෝධී පරාවර්තක ප්‍රවේශ මෙහෙයුම් පිළිබඳ අනතුරු ඇඟවීම් සක්‍රීය කිරීම සඳහා --illegal-access = අනතුරු ඇඟවීම භාවිතා කරන්න අවවාදයයි: සියලු නීති විරෝධී ප්‍රවේශ මෙහෙයුම් වනු ඇත අනාගත නිකුතුවකදී ප්‍රතික්ෂේප විය
ස්ටෙෆාන්

1
මෙය මට JDK 9.0.4 හි වැඩ කළේය (මම JAXB ආශ්‍රිත කේතය Maven 3.5.3 සමඟ Maven ප්ලගිනයක් හරහා අමතමින් සිටියෙමි). මම <dependency> <groupId>javax.activation</groupId> <artifactId>javax.activation-api</artifactId> <version>1.2.0</version> </dependency>අවසාන යැපීම ලෙස භාවිතා කළත් .
scrutari

1
නියමයි. මට යම් හේතුවක් නිසා - වසන්ත ඇරඹුම් යෙදුමක් ක්‍රි.ව. ඉන්ටෙලිජ් තුළ ක්‍රියාත්මක වන නමුත් මැක් මත සූර්යග්‍රහණය නොව, සූර්යග්‍රහණය තුළ නමුත් වින් 10 හි ඉන්ටෙලිජ් නොවේ. වේදිකා දෙකක එක් IDE එකක වැඩ කිරීමට හැකිවීම වාසියකි.
kometen

54

සියලුම JDKs සඳහා පිරිසිදු විසඳුම> = 9

ඔබේ ගොඩනැගීමට පරායත්තතා දෙකක් එකතු කළ යුතුය

  • jaxb-api
  • jaxb ක්‍රියාත්මක කිරීම

ක්‍රියාත්මක කිරීමක් ලෙස මම පැරණි com.sun පන්ති / පුස්තකාල ඉවත් කිරීම සඳහා වීදුරු මාළු විසින් යොමු ක්‍රියාත්මක කිරීම භාවිතා කිරීමට තෝරා ගත්තෙමි. ඒ නිසා එහි ප්‍රති result ලයක් ලෙස මම මගේ මේවන් බිල්ඩ් එකට එකතු කළා

<dependency>
  <groupId>javax.xml.bind</groupId>
  <artifactId>jaxb-api</artifactId>
  <version>2.3.1</version>
</dependency>

<dependency>
  <groupId>org.glassfish.jaxb</groupId>
  <artifactId>jaxb-runtime</artifactId>
  <version>2.3.1</version>
</dependency>

2.3.1 අනුවාදයෙන් ඔබට තවදුරටත් javax.activation එකතු කිරීමට අවශ්‍ය නොවන බව සලකන්න. ( https://github.com/eclipse-ee4j/jaxb-ri/issues/1222 බලන්න )


Javax.xml.bind මොඩියුලය ඇත්තටම අවශ්‍යද? JDK 11 හි මගේ කේතය එය නොමැතිව ක්‍රියා කරයි.
k.liakos

@ k.liakos මට විශ්වාස නෑ. Jaxb-runtime jar සහ api-jar එකම පන්ති / පැකේජ බෙදා නොගනී. මම හිතන්නේ එය ඔබගේ කේතය මත රඳා පවතී. ඔබේ කේතය 'javax.xml.bind' පැකේජයෙන් පන්ති භාවිතා නොකරන්නේ නම් ඔබට එය අවශ්‍ය නොවනු ඇත. මෙම ත්‍රෙඩ් එකේ මාතෘකාව වන්නේ 'javax / xml / bind / JAXBException' සොයාගත නොහැකි වීමයි; මෙම පන්තිය ඇත්තේ ජැක්ස්-අපී වල පමණි.
සෙබස්තියන් තීස්

1
ජාවා 12 හි බහු මොඩියුල ව්‍යාපෘතිය සමඟ පරිපූර්ණව ක්‍රියා කරයි.
හෙරිල් මුරටොවික්

42

මෙය මට ප්‍රයෝජනවත් විය:

<dependency>
    <groupId>javax.xml.bind</groupId>
    <artifactId>jaxb-api</artifactId>
    <version>2.3.0</version>
</dependency>
<dependency>
    <groupId>org.eclipse.persistence</groupId>
    <artifactId>eclipselink</artifactId>
    <version>2.7.0</version>
</dependency>

යාවත්කාලීන කරන්න

As ජැස්පර් යෝජනා කළ පරිදි, සමස්ත එක්ලිප්ස්ලින්ක් පුස්තකාලය මත යැපීම වළක්වා ගැනීම සඳහා, ඔබට එක්ලිප්ස්ලින්ක් මොක්සි මත ද රඳා සිටිය හැකිය:

මේවන්

<dependency>
    <groupId>org.eclipse.persistence</groupId>
    <artifactId>org.eclipse.persistence.moxy</artifactId>
    <version>2.7.3</version>
</dependency>

ශ්‍රේණිය

compile group: 'org.eclipse.persistence', name: 'org.eclipse.persistence.moxy', version: '2.7.3'

අමතර තර්ක නොමැතිව JRE 8 හෝ JRE 9 යන දෙකටම ධාවනය කළ හැකි * .jar නිපදවන මගේ ජාවා 8 යෙදුම සඳහා පරායත්තයන් ලෙස.

මීට අමතරව, JAXB API භාවිතා කිරීමට පෙර මෙය කොතැනක හෝ ක්‍රියාත්මක කළ යුතුය:

System.setProperty("javax.xml.bind.JAXBContextFactory", "org.eclipse.persistence.jaxb.JAXBContextFactory");

වැඩකරන පියවරක් ලෙස මෙතෙක් ක්‍රියා කරයි. පරිපූර්ණ විසඳුමක් ලෙස පෙනෙන්නේ නැත ...


5
org.eclipse.persistence:eclipselinkඔබ දැනටමත් eclipselink භාවිතා නොකරන්නේ නම් JAXB API ලබා ගැනීම සඳහා එකතු කිරීම ඉතා බර බර යැපීමකි.
ඇන්ඩි ගයිබර්ට්

4
ඔව් එය බරයි (mb 9mb) ඔව් ඔව් මම දැනටමත් එය භාවිතා කර තිබෙනවා. විධාන රේඛා තර්ක ඉදිරිපත් නොකර තාවකාලික, එකම භාජනයක් / යුද්ධයක් සඳහා JRE 8 සහ 9 යන දෙකම භාවිතා කිරීමට සිදුවන අයට මෙය විකල්ප විකල්ප ක්‍රමයක් බව මම සඳහන් කර ඇත්තෙමි.
මිහායිල් කොලොඩ්කොව්

2
ජේඩීකේ 8 සහ 9 අතර අන්තර් ක්‍රියාකාරිත්වය සඳහා, -XX:+IgnoreUnrecognizedVMOptionsවිධාන රේඛා විකල්පය භාවිතා කිරීමට මම නිර්දේශ කරමි (විස්තර සහිතව මගේ පිළිතුර යාවත්කාලීන කරන ලදි)
ඇන්ඩි ගයිබර්ට්

System.setProperty ("javax.xml.bind.JAXBContextFactory", "org.eclipse.persistence.jaxb.JAXBContextFactory"); මට වැඩ කරන්නේ නැහැ
ඩේවිඩ් බ්‍රොසාඩ්

1
සමස්ත EclipseLink පුස්තකාලය මත යැපීම වළක්වා ගැනීම සඳහා, ඔබට EclipseLink MOXy: groupId org.eclipse.persistence, artifactId මත ද රඳා සිටිය හැකිය org.eclipse.persistence.moxy.
ජෙස්පර්

35

ජාවා අනුවාදය ඔබ jdk 9 හෝ ඊට පසු අනුවාදයක් භාවිතා කරන්නේ නම් මෙය ඔබගේ pom වෙත එක් කරන්න

<dependency>
  <groupId>javax.xml.bind</groupId>
  <artifactId>jaxb-api</artifactId>
  <version>2.3.0</version>
</dependency>

1
මම නිතරම ස්ප්‍රිං බූට් මාර්ගෝපදේශකයන් සමඟ දුවනවා ... ස්තූතියි ටොන්.
masterxilo

2
Es සීසර් රොඩ්රිගස් ටී, මම මෙය ව්‍යාජ උදාහරණයකින් අත්හදා බැලුවෙමි. මම තෝරාගත් පිළිතුර භාවිතා කළ අතර එයට වැඩි පරායත්තතා ඇතුළත් විය.
පැට්ස්

ඔබේ ව්‍යාපෘතියේ pom.xml ගොනුවේ
සීසර් රොඩ්‍රිගුස් ටී

22

මෙය විසඳීම සඳහා, මම මගේ ව්‍යාපෘතියේ JAR ගොනු කිහිපයක් ආනයනය කර ඇත:

  • javax.activation-1.2.0.jar

http://search.maven.org/remotecontent?filepath=com/sun/activation/javax.activation/1.2.0/javax.activation-1.2.0.jar

  • jaxb-api-2.3.0.jar

http://search.maven.org/remotecontent?filepath=javax/xml/bind/jaxb-api/2.3.0/jaxb-api-2.3.0.jar

  • jaxb-core-2.3.0.jar

http://search.maven.org/remotecontent?filepath=com/sun/xml/bind/jaxb-core/2.3.0/jaxb-core-2.3.0.jar

  • jaxb-impl-2.3.0.jar

http://search.maven.org/remotecontent?filepath=com/sun/xml/bind/jaxb-impl/2.3.0/jaxb-impl-2.3.0.jar

  1. ඉහත ලිපිගොනු බාගත කර ව්‍යාපෘතියේ ලිබ්ස් ෆෝල්ඩරයට පිටපත් කරන්න
  2. ජාවා බිල්ඩ් මාවතේ ආනයනය කළ JAR ගොනු එක් කරන්න

4
බව සටහන් com.sun.xml.bindකෞතුක භාණ්ඩ සහ පැරණි පසු ගැළපුම සඳහා පමණක් ලබා ඇත. org.glassfish.jaxbවෙනත් පිළිතුරු වල සඳහන් පරිදි ඒ වෙනුවට ඔබ සමාන කෞතුක වස්තු භාවිතා කළ යුතුය .
ජෙස්පර්

මෙය මට වැඩ කළේ නැත. එය දෝෂයක් ඇති කළ අතර, එය විශේෂිත පන්තියක් සොයාගත නොහැකි බව පැවසීය.
රාමන්චෙෆ්

ග්‍රේල්ස් 3.4.10 යෙදුමක් යෙදවීමේදී මම ඒවා මින්ට් 19.2 (උබුන්ටු 18.04 පදනම) යටතේ ටොම්කාට් 9 / ලිබ් ෆෝල්ඩරයට දැමූ විට මා වෙනුවෙන් වැඩ කළෙමි.
මොහමඩ් ෆකී

18

සම්පාදනය කරන වේලාවේදී මෙන්ම ධාවනය වන වේලාවේදී ස්විචය එක් කරන්න --add-modules java.xml.bind

javac --add-modules java.xml.bind <java file name>

java --add-modules java.xml.bind <class file>

JDK 9මොඩියුල පිළිබඳ හොඳ හැඳින්වීමක් ද මෙහි සොයාගත හැකිය: https://www.youtube.com/watch?v=KZfbRuvv5qc


11

මෙය මට වැඩ කළා. Jaxb-api පමණක් එකතු කිරීම ප්‍රමාණවත් නොවීය.

        <dependency>
            <groupId>javax.xml.bind</groupId>
            <artifactId>jaxb-api</artifactId>
            <version>${jaxb-api.version}</version>
        </dependency>
        <dependency>
            <groupId>com.sun.xml.bind</groupId>
            <artifactId>jaxb-impl</artifactId>
            <version>${jaxb-api.version}</version>
        </dependency>
        <dependency>
            <groupId>com.sun.xml.bind</groupId>
            <artifactId>jaxb-core</artifactId>
            <version>${jaxb-api.version}</version>
        </dependency>

Jaxb-api.version සකසා ඇත්තේ කුමක් ද?
මිගෙල් මුනෝස්

Ig මිගෙල් මුනෝස් මම 2.2.7 භාවිතා කළෙමි
ජෙඩි මහතා

2
බව සටහන් com.sun.xml.bindකෞතුක භාණ්ඩ සහ පැරණි පසු ගැළපුම සඳහා පමණක් ලබා ඇත. org.glassfish.jaxbවෙනත් පිළිතුරු වල සඳහන් පරිදි ඒ වෙනුවට ඔබ සමාන කෞතුක වස්තු භාවිතා කළ යුතුය .
ජෙස්පර්

11

ඔබේ Build.gradle වෙත ගොස් ජාවා 9 හෝ ජාවා 10 යන දෙකටම පරායත්තයන් එක් කරන්න.

sourceCompatibility = 10 // You can also decrease your souce compatibility to 1.8 

//java 9+ does not have Jax B Dependents

    compile group: 'javax.xml.bind', name: 'jaxb-api', version: '2.3.0'
    compile group: 'com.sun.xml.bind', name: 'jaxb-core', version: '2.3.0'
    compile group: 'com.sun.xml.bind', name: 'jaxb-impl', version: '2.3.0'
    compile group: 'javax.activation', name: 'activation', version: '1.1.1'

11

--add-modules=java.xml.bindජේවීඑම් ධාවන කාල පරිසරයට xml බන්ධන මොඩියුලය එක් කිරීමට ඔබට JVM විකල්පය භාවිතා කළ හැකිය .

උදා: java --add-modules=java.xml.bind XmlTestClass


11

2019 අප්‍රේල් යාවත්කාලීන කරන්න

JAXB නිකුතු සඳහා Changelong https://javaee.github.io/jaxb-v2/doc/user-guide/ch02.html

උපුටා ගැනීම්:

    4.1. Changes between 2.3.0.1 and 2.4.0

         JAXB RI is now JPMS modularized:

            All modules have native module descriptor.

            Removed jaxb-core module, which caused split package issue on JPMS.

            RI binary bundle now has single jar per dependency instead of shaded fat jars.

            Removed runtime class weaving optimization.

    4.2. Changes between 2.3.0 and 2.3.0.1

          Removed legacy technology dependencies:

            com.sun.xml.bind:jaxb1-impl

            net.java.dev.msv:msv-core

            net.java.dev.msv:xsdlib

            com.sun.xml.bind.jaxb:isorelax

    4.3. Changes between 2.2.11 and 2.3.0

          Adopt Java SE 9:

            JAXB api can now be loaded as a module.

            JAXB RI is able to run on Java SE 9 from the classpath.

            Addes support for java.util.ServiceLoader mechanism.

            Security fixes

බලයලත් සබැඳිය https://github.com/eclipse-ee4j/jaxb-ri#maven-artifacts

මේවන් JAXB කෞතුක වස්තු සඳහා ඛණ්ඩාංක

jakarta.xml.bind: jakarta.xml.bind-api: JAXB සඳහා API පන්ති. JAXB ට එරෙහිව සම්පාදනය කිරීම අවශ්‍ය වේ.

org.glassfish.jaxb: jaxb-runtime: JAXB ක්‍රියාත්මක කිරීම, අනුක්‍රමිකකරණය සඳහා භාවිතා කරන ධාවන කාලය සහ ජාවා වස්තු xml සිට / දක්වා.

JAXB මේද-භාජන මිටි:

com.sun.xml.bind: jaxb-impl: JAXB ධාවන කාල මේද භාජනය.

Org.glassfish.jaxb කෞතුක වස්තු වලට වෙනස්ව, මෙම භාජන තුළ සියලු පරායත්ත පන්ති ඇතුළත් වේ. මෙම කෞතුක වස්තු වල JPMS මොඩියුලය විස්තර කරුවන් නොමැත. මාවන් ව්‍යාපෘති වලදී org.glassfish.jaxb පුරාවස්තු ඒ වෙනුවට භාවිතා කළ යුතුය.

org.glassfish.jaxb: jaxb-runtime: jar: 2.3.2 අදින්නේ:

[INFO] +- org.glassfish.jaxb:jaxb-runtime:jar:2.3.2:compile
[INFO] |  +- jakarta.xml.bind:jakarta.xml.bind-api:jar:2.3.2:compile
[INFO] |  +- org.glassfish.jaxb:txw2:jar:2.3.2:compile
[INFO] |  +- com.sun.istack:istack-commons-runtime:jar:3.0.8:compile
[INFO] |  +- org.jvnet.staxex:stax-ex:jar:1.8.1:compile
[INFO] |  +- com.sun.xml.fastinfoset:FastInfoset:jar:1.2.16:compile
[INFO] |  \- jakarta.activation:jakarta.activation-api:jar:1.2.1:compile

මුල් පිළිතුර

පහත දැක්වෙන්නේ මගේ මේවන් ව්‍යාපෘතියේ JAXB RI සඳහා භාවිතා කළ යුතු කෞතුක වස්තු මොනවාද? Maven හි, ඔබට මෙවැනි පැතිකඩක් භාවිතා කළ හැකිය:

<profile>
    <id>java-9</id>
    <activation>
        <jdk>9</jdk>
    </activation>
    <dependencies>
        <dependency>
            <groupId>org.glassfish.jaxb</groupId>
            <artifactId>jaxb-runtime</artifactId>
            <version>2.3.0</version>
        </dependency>
        <dependency>
            <groupId>javax.activation</groupId>
            <artifactId>activation</artifactId>
            <version>1.1.1</version>
        </dependency>
    </dependencies>
</profile> 

යැපුම් ගස පෙන්වයි:

[INFO] +- org.glassfish.jaxb:jaxb-runtime:jar:2.3.0:compile
[INFO] |  +- org.glassfish.jaxb:jaxb-core:jar:2.3.0:compile
[INFO] |  |  +- javax.xml.bind:jaxb-api:jar:2.3.0:compile
[INFO] |  |  +- org.glassfish.jaxb:txw2:jar:2.3.0:compile
[INFO] |  |  \- com.sun.istack:istack-commons-runtime:jar:3.0.5:compile
[INFO] |  +- org.jvnet.staxex:stax-ex:jar:1.7.8:compile
[INFO] |  \- com.sun.xml.fastinfoset:FastInfoset:jar:1.2.13:compile
[INFO] \- javax.activation:activation:jar:1.1.1:compile

සූර්යග්‍රහණයේ දී මෙය භාවිතා කිරීම සඳහා, ඔක්සිජන් 3 ඒ නිකුතුව (4.7.3 අ) හෝ පසුව Ctrl-Alt-P, හෝ ව්‍යාපෘතිය මත දකුණු-ක්ලික් කරන්න, මේවන්, ඉන්පසු පැතිකඩ තෝරන්න.


මම වෙනත් තැනක දැක ඇති javax.xml.bind> සඳහා යැපීමක් jaxb-apiඇත්ත වශයෙන්ම අතිරික්ත බව පෙන්වීමට ස්තූතියි . වීදුරු මාළු යැපීම එය ඇද ගනී. මම එය උත්සාහ කළෙමි, එය සැබවින්ම සාර්ථක වේ.
බැසිල් බෝර්ක්

8

ජාවා වෙබ් ආරම්භක ක්‍රියාත්මක කිරීම සඳහා අපට ඇන්ඩි ගයිබර්ට්ගේ යෝජනාව භාවිතා කළ හැකිය:

<j2se version="1.6+" 
      java-vm-args="-XX:+IgnoreUnrecognizedVMOptions --add-modules=java.se.ee"/>

--Add-modules හි ඇති අතිරේක "=" සටහන් කරන්න. බලන්න මෙම OpenJDK ටිකට් පිළිබඳ "අවබෝධතා runtime ප්රවේශ අනතුරු ඇඟවීම්" හෝ අවසාන සටහන ජාවා වේදිකාව, සම්මත සංස්කරණයකින් ඔරකල් JDK 9 සංක්රමණය මාර්ගෝපදේශය .


8

pom.xml හි javax.xml.bind යැපීම එක් කරන්න

    <dependency>
        <groupId>javax.xml.bind</groupId>
        <artifactId>jaxb-api</artifactId>
        <version>2.3.0</version>
    </dependency>

8

ජාවාඊ දැන් https://jakarta.ee/ විසින් පාලනය කරනු ලබන බැවින්, 2.3.2 වන විට නව මාවන් ඛණ්ඩාංක:

https://eclipse-ee4j.github.io/jaxb-ri/#maven-artifacts

පළමු නිකුත් කළ jaxb.version 2.3.2 වේ.

<properties>
  <jaxb.version>2.3.2</jaxb.version>
</properties>

<dependency>
  <groupId>jakarta.xml.bind</groupId>
  <artifactId>jakarta.xml.bind-api</artifactId>
  <version>${jaxb.version}</version>
</dependency>
<dependency>
    <groupId>org.glassfish.jaxb</groupId>
    <artifactId>jaxb-runtime</artifactId>
    <version>${jaxb.version}</version>
</dependency>

7

මම මෙම URL එක අනුගමනය කළ අතර පහත සැකසුම් මට සැබවින්ම උපකාරී විය. මම මැක්බුක් ප්‍රෝ හි STS IDE සමඟ ජාවා 10 භාවිතා කරමි. එය චාම් එකක් මෙන් ක්‍රියා කරයි.

   <dependency>
    <groupId>javax.xml.bind</groupId>
    <artifactId>jaxb-api</artifactId>
    <version>2.3.0</version>
</dependency>
<dependency>
    <groupId>org.glassfish.jaxb</groupId>
    <artifactId>jaxb-runtime</artifactId>
    <version>2.3.0</version>
    <scope>runtime</scope>
</dependency>
<dependency>
    <groupId>javax.activation</groupId>
    <artifactId>javax.activation-api</artifactId>
    <version>1.2.0</version>
</dependency>

7

ජාවා 12 හි Apache Camel 2.24.1 ධාවනය වන පරායත්තතාවයන් සමඟ මගේ ගැටලු මෙය විසඳීය:

    <dependency>
        <groupId>javax.activation</groupId>
        <artifactId>activation</artifactId>
        <version>1.1.1</version>
    </dependency>

    <dependency>
        <groupId>javax.xml.bind</groupId>
        <artifactId>jaxb-api</artifactId>
        <version>2.3.1</version>
    </dependency>

    <dependency>
        <groupId>com.sun.xml.bind</groupId>
        <artifactId>jaxb-core</artifactId>
        <version>2.3.0.1</version>
    </dependency>

    <dependency>
        <groupId>com.sun.xml.bind</groupId>
        <artifactId>jaxb-impl</artifactId>
        <version>2.3.0.1</version>
    </dependency>

මගේ නඩුවේදී මට pom ගොනුවේ
ටොම්කාට්

6

2.0.5.RELEASEජාවා 11 හි ස්ප්‍රිං බූට් භාවිතා කරමින් මටද එම ගැටලුවම ඇතිවිය.

javax.xml.bind:jaxb-api:2.3.0තනිවම එකතු කිරීම ගැටළුව විසඳුවේ නැත. මට ස්ප්‍රිං බූට් නවතම සන්ධිස්ථානයට යාවත්කාලීන කිරීමටද සිදුවිය 2.1.0.M2, එබැවින් මෙය ඊළඟ නිල නිකුතුවේදී නිවැරදි වනු ඇතැයි මම සිතමි.


මෙය මට සම්බන්ධ නැත. වසන්ත ඇරඹුම 2 භාවිතා කිරීම නොසලකා මෙම ත්‍රෙඩ් එකේ විසඳුම් කිහිපයක් තිබේ. (මම වසන්ත ඇරඹුම 2.0.5.RELEASE btw ද භාවිතා කරමි). සමහර විට වසන්තයේ 2.1.0.M2 හි දැනටමත් ජැක්ස් ධාවන වේලාවක් ඇතුළත් කර ඇත.
සෙබස්තියන් තීස්

ස්ප්‍රිං බූට් 2.1.0.RELEASE සමඟ JAXB තවදුරටත් අවශ්‍ය නොවන බව පෙනේ - github.com/spring-projects/spring-boot/releases
Burrich

6

මම ClassNotFoundException: javax.xml.bind.DatatypeConverter හරහා ජාවා 11 සහ

<dependency>
    <groupId>io.jsonwebtoken</groupId>
    <artifactId>jjwt</artifactId>
    <version>0.9.1</version>
</dependency>

මම මේ සියල්ල උත්සාහ කළේ javax.xml.bind: jaxb-api හෝ spring boot jakarta.xml.bind-api .. jjwt අනුවාදය 0.10.0 හි නිවැරදි කිරීම් සඳහා ඉඟියක් මට හමු විය .. නමුත් වඩාත්ම වැදගත් දෙය නම් jjwt පැකේජය දැන් බෙදී යයි!

මේ අනුව, මෙම යොමුව පරීක්ෂා කරන්න: https://github.com/jwtk/jjwt/issues/510

සරලවම, ඔබ භාවිතා කරන්නේ නම්

Java11 සහ jjwt 0.9.x සහ ඔබ ClassNotFoundException ට මුහුණ දෙයි: javax.xml.bind.DatatypeConverter නිකුතුව,

යන්න

jjwt අනුවාදය 0.11.x, නමුත් බෙදුණු පැකේජ භාවිතා කරන්න: https://github.com/jwtk/jjwt#install

පැකේජ බෙදී ඇති හෙයින් ඔබට jjwt යැපීම සඳහා ඉහළ අනුවාදයක් සොයාගත නොහැක.

චියර්ස්.


5

JDK 9+ භාවිතා කරන විට ඔබ JAX-B පරායත්තතා එකතු කළ යුතුය. ඇන්ඩ්රොයිඩ් ශබ්දාගාර පරිශීලකයා සඳහා, ඔබ ඔබේ මේ එකතු කිරීමට ඔබට අවශ්ය විය හැකිය build.gradleගේ dependencies {}වාරණ:

// Add missing dependencies for JDK 9+
if (JavaVersion.current().ordinal() >= JavaVersion.VERSION_1_9.ordinal()) {
    // If you're using @AutoValue or any libs that requires javax.annotation (like Dagger)
    compileOnly 'com.github.pengrad:jdk9-deps:1.0'
    compileOnly 'javax.annotation:javax.annotation-api:1.3.2'

    // If you're using Kotlin
    kapt "com.sun.xml.bind:jaxb-core:2.3.0.1"
    kapt "javax.xml.bind:jaxb-api:2.3.1"
    kapt "com.sun.xml.bind:jaxb-impl:2.3.2"

    // If you're using Java
    annotationProcessor "com.sun.xml.bind:jaxb-core:2.3.0.1"
    annotationProcessor "javax.xml.bind:jaxb-api:2.3.1"

    testAnnotationProcessor "com.sun.xml.bind:jaxb-core:2.3.0.1"
    testAnnotationProcessor "javax.xml.bind:jaxb-api:2.3.1"
}

ඒකක පරීක්ෂණ සමඟ වැඩ කිරීම සඳහා මම ඔබේ පිළිතුර වෙනස් කර ඇත.
මලාචියාස්

3

පිළිතුරක් නොව අතිරේකයක්: ධාවනය නිසා මට ලැබුණි groovysh (Groovy 2.4.13) නිසා JAVA_HOME ජාවා 9 ස්ථාපනයකට යොමු කළහොත් ( java version "9.0.1"හරියටම කිවහොත්) එය අසාර්ථක ලෙස අසමත් වේ:

java.lang.reflect.InvocationTargetException
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:564)
        at org.codehaus.groovy.tools.GroovyStarter.rootLoader(GroovyStarter.java:107)
        at org.codehaus.groovy.tools.GroovyStarter.main(GroovyStarter.java:129)
Caused by: java.lang.NoClassDefFoundError: Unable to load class groovy.xml.jaxb.JaxbGroovyMethods due to missing dependency javax/xml/bind/JAXBContext
        at org.codehaus.groovy.vmplugin.v5.Java5.configureClassNode(Java5.java:400)
        at org.codehaus.groovy.ast.ClassNode.lazyClassInit(ClassNode.java:277)
        at org.codehaus.groovy.ast.ClassNode.getMethods(ClassNode.java:397)
        ...
        ..
        .
        ..
        ...
        at org.codehaus.groovy.tools.shell.Groovysh.<init>(Groovysh.groovy:135)
        at org.codehaus.groovy.vmplugin.v7.IndyInterface.selectMethod(IndyInterface.java:232)
        at org.codehaus.groovy.tools.shell.Main.<init>(Main.groovy:66)
        at org.codehaus.groovy.vmplugin.v7.IndyInterface.selectMethod(IndyInterface.java:232)
        at org.codehaus.groovy.tools.shell.Main.main(Main.groovy:163)
... 6 more

විසඳුම වූයේ:

  • යන්න මේ JAXB ව්යාපෘතිය github.io දී ( "- පංතිය-මාර්ගය හැර CDDL 1.1 සහ GPL 2.0 JAXB ද්විත්ව බලපත්රය යටතේ අවසර ලබා ඇත" )

  • බාගත jaxb-ri-2.3.0.zip

  • ඔබගේ ජාවා යටිතල පහසුකම් ලිපිගොනු කොතැනක හෝ ඉවත් කරන්න (මගේ නඩුවේ, /usr/local/java/jaxb-ri/ ). වෙනත් විසඳුමක් පැවතිය හැකිය (සමහර විට SDKMAN හරහා, මම නොකියමි)

  • ලිබ් උප බහලුමේ ඇති භාජන ඇති බවට වග බලා ගන්න CLASSPATH. මම එය කරන්නේ බාෂ් ආරම්භයේදී ආරම්භ කළ ස්ක්‍රිප්ට් එකක් හරහාය /etc/profile.d/java.sh.

ශ්‍රිතයකට අසුරා ...

function extend_qzminynshg {
   local BASE="/usr/local/java"
   for LIB in jaxb-api.jar  jaxb-core.jar  jaxb-impl.jar  jaxb-jxc.jar  jaxb-xjc.jar; do
      local FQLIB="$BASE/jaxb-ri/lib/$LIB"
      if [[ -f $FQLIB ]]; then
         export CLASSPATH=$FQLIB:$CLASSPATH
      fi
    done
}

extend_qzminynshg; unset extend_qzminynshg

එය ක්‍රියාත්මක වේ!


1
මට තේරෙන්නේ නැහැ. පෙනෙන විදිහට මිනිසුන්ට අවශ්‍ය වන්නේ භාජන ලබා ගැනීම වෙනුවට විධාන රේඛා විකල්පයන් සමඟ ගැටීමටද? ඔබට ගැලපේ.
ඩේවිඩ් ටොන්හෝෆර්

7
ජාවා සංවර්ධකයින් සාමාන්‍යයෙන් භාජන අතින් බාගත කරනවාට වඩා පරායත්තතා කළමනාකරණය කිරීම සඳහා ග්‍රැඩ්ල් හෝ මේවන් වැනි ගොඩනැගිලි මෙවලම් භාවිතා කරයි. අඩු ඡන්ද සඳහා හේතුව එය විය හැකිය.
ජෝෂුවා ඩේවිස්


2

හරි, මට එකම ආකාරයේ ගැටලුවක් තිබේ, නමුත් මම ජාවා 8 භාවිතා කරමින් සිටියෙමි, මෙම දෝෂය දිගටම ලබා ගනිමින්, මම බොහෝ විසඳුම් අත්හදා බැලුවෙමි. නමුත් ගෝලීය ජාවා අනුවාදය 8 ලෙස සකසා තිබුණද, මගේ මේවන් තවමත් ජාවා 9 වෙත යොමු වී ඇති බව පෙනේ.

මේ ආකාරයේ ගැටළුවක් ඇති ඕනෑම අයෙකුට, පෙරනිමි ජාවා භාවිතා කිරීම සඳහා මාවන් නිවැරදි කරන්නේ කෙසේදැයි බලන්න


2

පැරණි පිළිතුර "ඇමසන්කොරෙටෝ වෙත මාරුවීමෙන් ගැටළුව විසඳා ඇත" ප්‍රවෘත්ති පිළිතුර: මම කොරෙටෝ නවතම භාවිතා කළ නමුත් එය සමාන jdk 1.8 වේ. එබැවින් කෙසේ වෙතත් අපට අතින් පරායත්තතා එකතු කිරීම අවශ්‍ය වේ


2
JDK 11 සඳහා වන ඇමසන් කොරෙටෝ බෙදාහැරීම javax.xml.bind පන්ති සපයන්නේ නැත. කොරෙටෝ වෙත මාරුවීමෙන් පසු ගැටළුව විසඳනු ලැබුවේ නම්, එයට හේතුව ඔබ ජේඩීකේ 8 වෙත පහත හෙලීමයි.
ඇන්ඩි ගයිබර්ට්

අමුතුයි, මම පරීක්ෂා කරන්නම්, මම කොරෙටෝ නවතම භාවිතා කළ තටාකයේ
ආමේන් අර්සුමන්යාන්

ඔව්, amazoncorretto:latestදැනට ලබා දෙන්නේ JDK 8 මිස 11 නොවේ. බොහෝ ඩෝකර් පින්තූර තවමත් JDK 8 මත පදනම් වී ඇත, හරියටම JDK 8 -> 11 අතර API ඉවත් කිරීම නිසා ඇති වන අනුකූලතා ගැටලු නිසාය
ඇන්ඩි ගුයිබර්ට්

2

ජාවා 8 ඉලක්කය සඳහා සම්පාදනය කිරීමේදී මට භාවිතා කිරීමට අවශ්‍ය වූ පරායත්ත අනුවාද. ජාවා 8, 11, සහ ජේආර්ඊ 12 හි පරීක්ෂා කළ යෙදුම.

        <!-- replace dependencies that have been removed from JRE's starting with Java v11 -->
        <dependency>
            <groupId>javax.xml.bind</groupId>
            <artifactId>jaxb-api</artifactId>
            <version>2.2.8</version>
        </dependency>
        <dependency>
            <groupId>com.sun.xml.bind</groupId>
            <artifactId>jaxb-core</artifactId>
            <version>2.2.8-b01</version>
        </dependency>
        <dependency>
            <groupId>com.sun.xml.bind</groupId>
            <artifactId>jaxb-impl</artifactId>
            <version>2.2.8-b01</version>
        </dependency>
        <!-- end replace dependencies that have been removed from JRE's starting with Java v11 -->

2

මට ජාවා 11 හි සහ ශ්‍රේණිගත කිරීම සඳහා මෙය ක්‍රියාත්මක විය:

plugins {
      id 'java'
}

dependencies {
      runtimeOnly 'javax.xml.bind:jaxb-api:2.3.1'
}

අපි කොහෙද ඒක දාන්නේ?
nyxee

ඔබ gradle භාවිතා කරන්නේ නම් ඔබගේ build.gradle ගොනුවේ.
silver_mx

2

ලෙස නිල ප්රලේඛනය රාජ්යයන්:

උත්ශ්‍රේණිගත කිරීමේදී ඔබට පහත සඳහන් දේවලට මුහුණ දිය හැකිය:

java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException

ශිශිරතාරක සඳහා සාමාන්‍යයෙන් JAXB අවශ්‍ය වේ. Java9 හෝ Java10 සමඟ මෙම ක්‍රියාකාරිත්වය යථා තත්වයට පත් කිරීම සඳහා ඔබට java.xml.bind මොඩියුලය එක් කළ හැකිය (මොඩියුලය අතහැර දැමුවද).

Java11 වන විට, මොඩියුලය ලබා ගත නොහැකි බැවින් ඔබේ එකම විකල්පය වන්නේ JAXB RI එකතු කිරීමයි (java.xml.bind මොඩියුලය එකතු කිරීම වෙනුවට ඔබට එය Java9 ලෙස කළ හැකිය:


මේවන්

<dependency>
    <groupId>org.glassfish.jaxb</groupId>
    <artifactId>jaxb-runtime</artifactId>
</dependency>

ශ්‍රේණිය (build.gradle.kts):

implementation("org.glassfish.jaxb:jaxb-runtime")

Gradle (build.gradle)

implementation 'org.glassfish.jaxb:jaxb-runtime'

ඔබ විශේෂිත අනුවාදයක් සඳහන් කිරීමට කැමති නම්, මෙහි බලන්න: https://mvnrepository.com/artifact/org.glassfish.jaxb/jaxb-runtime


1

ඔබ maven වෙත jaxb පරායත්තතා එකතු කළ යුතුය. වීදුරු මාළු ක්‍රියාත්මක කිරීමේ අනුවාදය 2.3.2 නව ජකර්තා ඊඊ ජැක්ස් ඇපී අනුවාදය 2.3.2 සමඟ හොඳින් ගැලපේ.

<!-- API -->
<dependency>
    <groupId>jakarta.xml.bind</groupId>
    <artifactId>jakarta.xml.bind-api</artifactId>
    <version>2.3.2</version>
</dependency>

<!-- Runtime -->
<dependency>
    <groupId>org.glassfish.jaxb</groupId>
    <artifactId>jaxb-runtime</artifactId>
    <version>2.3.2</version>
</dependency>

1

මම ජාවා 11 මගේ ව්යාපෘතිය උත්ශ්රේණි පසු ඒ හා සමාන ප්රශ්න ඇති, එසේ නම් කුමක් පෙනෙන ජාවා 11 සඳහා සහය ඇති වසන්ත ඇරඹුම් 2.1.1 උත්ශ්රේණිගත කිරීම විය ස්ථාවර, මෙම උදව්


අනාගතයේ දී url වෙනස් වුවහොත් සබැඳි පමණක් පිළිතුරු අවලංගු වන බැවින් කරුණාකර ඔබේ පිළිතුරෙහි අවම වශයෙන් කොටසක් එකතු කිරීම ගැන සලකා බලන්න.
යුකාෂිමා හක්සේ

0

මම සාදයට ප්‍රමාද වී ඇති බව මම දනිමි, නමුත් මගේ දෝෂය අවසන් වූයේ වෙනස් විසඳුමක් අවශ්‍ය නිසාය ... සුපිරි සරලයි

මම මුලින් ටොම්කාට් 9 වෙත යොදවා ඇති අතර මට 7 ක් අවශ්‍ය බව මට වැටහුණි ... මගේ පන්ති මාවත build.xml හි 7 අනුවාදය වෙත සිතියම් ගත කිරීමට මට අමතක විය.

මා කළ පරිදි මෙම සරල කාරණය නොසලකා හැරීමට කළමනාකරණය කරන අනාගතයේ දී යමෙකුගේ වැරැද්ද මෙය නිවැරදි කරනු ඇතැයි මම බලාපොරොත්තු වෙමි!


2
මෙය OP ට උදව් විය හැකි නමුත්, වැඩි විස්තර, උදාහරණ ආදිය එකතු කිරීම වඩා හොඳය
Tiw
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.