【问题标题】:SpringBoot works from IntelliJ but throws java.lang.NoSuchMethodError from JARSpringBoot 从 IntelliJ 工作,但从 JAR 抛出 java.lang.NoSuchMethodError
【发布时间】:2018-12-01 04:05:58
【问题描述】:

我正在构建一个 SpringBoot REST 客户端,该客户端通过 RPC 连接到 CorDapp(Corda 应用程序)。 RPC 代理依赖于 ActiveMQ/Artemis。

我的 gradle.build 文件包含这些依赖项

compile "org.apache.activemq:artemis-commons:$active_mq_version"
compile "org.apache.activemq:artemis-core-client:$active_mq_version"

当我从 IntelliJ 运行应用程序时,一切正常。

模块及其所有依赖项都使用以下 gradle 任务将 Fat-JAR 转换为独立的 JAR 文件

jar {
    zip64 = true
    from {
        String[] include = [
                "kotlin-runtime-${kotlin_version}.jar",
                "kotlin-stdlib-${kotlin_version}.jar"
        ]

        configurations.compile
                .findAll { include.contains(it.name) }
                .collect { it.isDirectory() ? it : zipTree(it) }
    }
    manifest {
        attributes(
                'Class-Path': configurations.compile.collect { it.getName() }.join(' '),
                'Main-Class': 'com.client.ApplicationKt'
        )
    }
}

当我尝试运行 JAR 文件时,出现以下异常:

java.lang.NoSuchMethodError: org.apache.activemq.artemis.api.core.client.ClientSession.createTemporaryQueue(Lorg/apache/activemq/artemis/api/core/SimpleString;Lorg/apache/activemq/artemis/api/core/RoutingType;Lorg/apache/ activemq/artemis/api/core/SimpleString;)

当我检查 JAR 文件的内容时,似乎 ActiveMQ/Artemis 已经正确地进行了 Fat-JAR,所以我不确定它为什么找不到方法?

【问题讨论】:

  • 因为您正试图聪明地解决 Spring Boot。你必须使用 Spring Boot 插件来创建一个可执行的 jar,不要尝试自己做。 Spring Boot 需要一个特定布局的 jar 文件,该 jar 文件全部嵌入在 spring boot 插件中。

标签: spring-boot intellij-idea kotlin corda activemq-artemis


【解决方案1】:

在使用 spring boot 时,您不必创建像那样的胖罐子。 您可以将 spring-boot-gradle-plugin dependency 包含到您的 build.gradle 中。

然后,只需运行 gradle 构建将在 target 文件夹中生成一个 spring boot jar 文件,该文件将包含所有必需的依赖项,并且可以使用 java -jar 运行。

更多信息在这里:https://spring.io/guides/gs/spring-boot/#_jar_support_and_groovy_support

【讨论】:

    猜你喜欢
    • 2019-01-24
    • 2020-01-02
    • 2016-02-25
    • 2020-02-17
    • 2021-03-15
    • 2019-09-19
    • 1970-01-01
    • 1970-01-01
    • 2022-10-03
    相关资源
    最近更新 更多