JDK11 + spring boot = JAXBException: реализация JAXB-API не найдена в пути к модулю или пути к классам - PullRequest
2 голосов
/ 07 октября 2019

У меня есть простой весенний проект, основанный на официальном руководстве для использования веб-службы. Этот пример, похоже, нацелен на JDK 8, но я хочу использовать последнюю версию LTS, JDK 11.

Я адаптировал файл pom.xml и добавил некоторые зависимости, которые, по-видимому, были удалены из JDK, а именно:

        <dependency>
            <groupId>org.glassfish.jaxb</groupId>
            <artifactId>jaxb-core</artifactId>
            <version>2.3.0.1</version>
        </dependency>

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

        <dependency>
            <groupId>com.sun.xml.ws</groupId>
            <artifactId>rt</artifactId>
            <version>2.3.1</version>
        </dependency>

        <dependency>
            <groupId>com.sun.activation</groupId>
            <artifactId>javax.activation</artifactId>
            <version>1.2.0</version>
        </dependency>

Однако я не могу запустить приложение, но всегда получаю эту ошибку:

➜  spring-test git:(master) mvn spring-boot:run
[INFO] Scanning for projects...
...
org.springframework.ws.soap.client.SoapFaultClientException: Implementation of JAXB-API has not been found on module path or classpath.
    at org.springframework.ws.soap.client.core.SoapFaultMessageResolver.resolveFault (SoapFaultMessageResolver.java:38)
    at org.springframework.ws.client.core.WebServiceTemplate.handleFault (WebServiceTemplate.java:830)
    at org.springframework.ws.client.core.WebServiceTemplate.doSendAndReceive (WebServiceTemplate.java:624)
    at org.springframework.ws.client.core.WebServiceTemplate.sendAndReceive (WebServiceTemplate.java:555)
    at org.springframework.ws.client.core.WebServiceTemplate.marshalSendAndReceive (WebServiceTemplate.java:390)
    at com.example.demo.CountryClient.getCountry (CountryClient.java:21)
    at com.example.demo.DemoApplication.lambda$lookup$0 (DemoApplication.java:24)
    at org.springframework.boot.SpringApplication.callRunner (SpringApplication.java:781)
    at org.springframework.boot.SpringApplication.callRunners (SpringApplication.java:765)
    at org.springframework.boot.SpringApplication.run (SpringApplication.java:319)
    at org.springframework.boot.SpringApplication.run (SpringApplication.java:1215)
    at org.springframework.boot.SpringApplication.run (SpringApplication.java:1204)
    at com.example.demo.DemoApplication.main (DemoApplication.java:13)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
    at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke (Method.java:566)
    at org.springframework.boot.maven.AbstractRunMojo$LaunchRunner.run (AbstractRunMojo.java:543)
    at java.lang.Thread.run (Thread.java:834)

Хотя есть как минимум два вопроса ( this и это ), относящееся к этой теме, я перепробовал все комбинации версий, которые я мог найти в этих сообщениях, и у меня все еще есть та же ошибка.

Конкретная версия JDK + mavenЯ использую это:

Apache Maven 3.6.2 (40f52333136460af0dc0d7232c0dc0bcf0d9e117; 2019-08-27T16:06:16+01:00)
Maven home: /usr/local/Cellar/maven/3.6.2/libexec
Java version: 11.0.4, vendor: Oracle Corporation, runtime: /Library/Java/JavaVirtualMachines/jdk-11.0.4.jdk/Contents/Home
Default locale: en_US, platform encoding: UTF-8
OS name: "mac os x", version: "10.14.6", arch: "x86_64", family: "mac"

И код для моего теста здесь .

Ответы [ 2 ]

1 голос
/ 07 октября 2019

Взгляните на этот ответ и проверьте, может ли он вам помочь. У нас есть пара проектов, использующих Java 11 с Spring WS, и все работает просто отлично. Также убедитесь, что ваш pom.xml ориентирован на Java 11:

<properties>
    <java.version>11</java.version>
    <spring-cloud.version>Greenwich.SR2</spring-cloud.version>
</properties>

Что касается отсутствующих классов, нам пришлось добавить следующую зависимость, и ничего больше:

<dependency>
    <groupId>org.glassfish.jaxb</groupId>
    <artifactId>jaxb-runtime</artifactId>
    <version>2.3.2</version>
</dependency>
0 голосов
/ 07 октября 2019

мы должны добавить следующую зависимость

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

insted:

<dependency>
    <groupId>org.glassfish.jaxb</groupId>
    <artifactId>jaxb-core</artifactId>
    <version>2.3.0.1</version>
</dependency>

это проблема для всех версий jdk 11, даже от amazone correto

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...