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

尚未找到JAXB-API的实现(运行java jar时)

别永年
2023-03-14

行中出现错误(JAXBContext.newInstance):

    @Override
    public void doWithMessage(WebServiceMessage message) throws IOException, TransformerException {
    SoapHeader soapHeader = ((SoapMessage)message).getSoapHeader();

    try {
        JAXBContext context = JAXBContext.newInstance(AuthHeader.class);
        Marshaller marshaller = context.createMarshaller();
        marshaller.marshal(authentication, soapHeader.getResult());

    } catch (JAXBException e) {
        System.out.println(e.getMessage());
        throw new IOException("error while marshalling authentication.");
    }
}

当它作为测试用例执行时,它运行良好,使用:

 mvn install

或mvn:Spring:引导运行

但在使用以下方法运行jar时会导致问题:

java -jar target/fileName-0.0.1-SNAPSHOT.jar 

运行java-jar并使用postman命中时出错。

Implementation of JAXB-API has not been found on module path or classpath.

java.io.IOException: error while marshalling authentication.

版本信息

mvn -version
Apache Maven 3.6.0
Maven home: /usr/share/maven
Java version: 11.0.7, vendor: Ubuntu, runtime: /usr/lib/jvm/java-11-openjdk-amd64
Default locale: en, platform encoding: UTF-8
OS name: "linux", version: "4.15.0-1051-aws", arch: "amd64", family: "unix"

java -version
openjdk version "11.0.7" 2020-04-14
OpenJDK Runtime Environment (build 11.0.7+10-post-Ubuntu-2ubuntu218.04)
OpenJDK 64-Bit Server VM (build 11.0.7+10-post-Ubuntu-2ubuntu218.04, mixed mode, sharing)

同一个jar在开发服务器上运行良好,但不在临时服务器上运行。开发和登台服务器都有相同的环境(java版本、mvn,一切都一样)。我将这些依赖项添加到pom中。xml:

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

如果它与胖jar相关,那么为什么其他依赖项(如amazon s3、stripe等)适用于普通jar。仅jaxb有什么问题?

我甚至尝试使用具有以下配置的mvn包创建fat jar:

    <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
        <executions>
            <execution>
                <goals>
                    <goal>repackage</goal>
                </goals>
                <configuration>
                    <mainClass>com.patracorp.patrapay.PatrapayApplication</mainClass>
                    <layout>ZIP</layout>
                </configuration>
            </execution>
        </executions>
    </plugin>

但仍然得到同样的错误。

共有2个答案

俞学
2023-03-14

在Java 9及更高版本中,Java删除了Java。xml。从其默认类路径绑定。因此,必须显式地将JAR文件添加到类路径中。

我想,仅仅添加jaxb impl是不够的<您可以在POM中添加以下依赖项,然后进行尝试吗。

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

请分享结果。

姚雅珺
2023-03-14

1)仔细检查您没有重复的依赖项,因为JAXB工件已多次重命名。

运行“mvn dependency:tree”不应多次输出JAXB相关工件。

2) 尝试使用此工件:

    <dependency>
        <groupId>org.glassfish.jaxb</groupId>
        <artifactId>jaxb-runtime</artifactId>
        <version>2.3.2</version>
    </dependency>
 类似资料:
  • 我使用的是Appium版本1.4.16.1、Selenium 2.53.0和java客户端2.1.0 我得到以下错误:- “org.openqa.selenium.WebDriverException:尚未实施。请帮助我们:http://appium.io/get-involved.html (警告:服务器未提供任何stacktrace信息)命令持续时间或超时:7毫秒生成信息:版本:“2.53.0

  • 我有一个项目叫MyTest。它有三类: 第一个类实现了工具接口(这是导致问题的类),为了简单起见,我做了空实现: 第二类是普通类: 第三类也是普通类: 我将项目导出为“Runnable Jar”(即在Eclipse中:项目 我在“Launch Configuration”和“Packaged required libraries into generated JAR”中设置“A2”作为主类,输出J

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

  • 只有当docker容器尚未运行时,我才需要运行它。给了这个命令。如果它不存在,我将如何运行它。 我对任何脚本或语言都持开放态度。

  • 问题内容: 我试图将HikariCP与PostgreSQL一起使用,但是它不起作用。它引发异常: 我尝试了所有可能的驱动程序版本(包括)-没有任何帮助。有人在PostgreSQL中使用它吗? 这是我的配置文件: 问题答案: 不要使用。允许HikariCP遵循其使用方法的默认行为。这需要JDBC4驱动程序。

  • 在一个项目中,我们将Hibernate与HikariCP结合使用,并且在Eclipse中一切都很好。但一旦我生成了一个jar文件(Maven),就再也找不到hikaricp了。我已经从各个可能的角度考虑了这个问题,但我无法找出问题所在。。。 坚持不懈xml 波姆。xml 如果我在Eclipse中运行此功能,则一切正常: 01:14:05,436信息HikariDataSource: 70-Hika