当前位置: 首页 > 知识库问答 >
问题:

JDK11 spring boot=JAXBException:在模块路径或类路径上找不到JAXB-API的实现

陆烨磊
2023-03-14

我有一个基于官方指南的简单Spring项目来使用Web服务。此示例似乎针对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)

尽管至少有两个问题(这个和这个)与这个主题相关,但我已经尝试了在这些帖子中可以找到的所有版本组合,我仍然有相同的错误。

我使用的特定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个答案

家志学
2023-03-14

我们必须添加以下依赖项

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

即使在amazone correto上,jdk 11的所有版本都存在问题

梁骞仕
2023-03-14

看看这个答案,看看它是否对您有帮助。我们有几个项目使用Java11和Spring WS,一切都很好。还要确保您的pom.xml针对Java11:

<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>
 类似资料:
  • 我试图在Java 9上运行我的Spring Boot应用程序,我遇到了JAXB问题,这在指南中有描述,但对我来说并不适用。我添加了对JAXB api的依赖,应用程序开始工作。如果由于缺少JAXB而导致以下异常缺少使用Java版本的实现

  • 我正试图在Java9上运行我的Spring Boot应用程序,但我遇到了JAXB问题,这在指南中有描述,但对我不起作用。我添加了对JAXB api的依赖,应用程序开始工作。如果由于缺少JAXB缺少使用Java version>=9的实现而出现以下异常:

  • 我有一个小项目,当我让它运行时,它确实会引发异常。 问题就在这里(TestObject.java): 我真的不明白为什么这会引发异常。我还创建了一个类似于charm的测试(TestTest.java)。请原谅我的名字,但这只是一个小的测试应用程序,可以让它与java 11一起工作。 我遵循了这个:javax。xml。绑定在模块路径或类路径上未找到JAXB-API的JAXBException实现,已

  • 问题内容: 我不太确定是什么原因导致的,因为清单中正确列出了它: 我还添加了来构建路径,并将其移至的顶部,但是它仍然给我同样的错误。 编辑:我完全重建了该项目,并且无法重现该错误。不知道是什么原因造成的。 问题答案: 我的项目有同样的问题。这是由于我的项目与我在项目中添加的库项目之间的android支持库版本冲突而发生的。将相同版本的android支持库放入您的项目和包含的库项目中,并清理构建 …

  • 问题内容: 我目前正在一个项目中,我必须使用纯本地ndk。当我尝试从Irrlicht引擎源运行helloworld示例时,它起作用了。然后,按照该示例的相同格式尝试在我的项目中使用它。但是我得到了: 在运行我的项目时。 这是我的main.cpp文件: n Android.mk: 我在AndroidManifest.xml中给了Activity名称: 我在这里做什么错?如有必要,我将发布完整代码。

  • 我目前正在做一个项目,在这个项目中我必须使用纯原生的NDK。当我尝试从Irrlicht引擎源代码运行helloworld示例时,它起到了作用。然后我尝试在我的项目中使用它,遵循该示例的相同格式。但我得到: 在运行我的项目时。 并且我在AndroidManifest.xml中给出了活动名称: 我在这里犯了什么错误?如果需要,我会发布完整的代码。