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

用spring boot gradle插件构建的可执行jar缺少依赖项

龙亮
2023-03-14

我有一个用Spring Boot的Gradle插件构建的可执行JAR。它在生成文件中具有以下依赖项:

建筑格拉德尔

compile('org.apache.activemq:activemq-client:5.9.0')
compile('org.apache.activemq:activemq-broker:5.9.0')
compile('org.apache.activemq:activemq-kahadb-store:5.9.0')
compile('org.apache.activemq.protobuf:activemq-protobuf:1.1')

问题是,在我运行./gradlew干净构建之后,创建的工件不包含tivemq-原型错误jar,只包含其他的tivemq jars:

[] jar -tf build/libs/application-0.1.0.jar | grep activemq
lib/activemq-client-5.9.0.jar
lib/activemq-broker-5.9.0.jar
lib/activemq-kahadb-store-5.9.0.jar
lib/activemq-openwire-legacy-5.9.0.jar

因此,当我尝试运行jar时,我遇到了一个异常,即无法找到此依赖项中的类:

java.lang.ClassNotFoundException: org.apache.activemq.protobuf.Message

在构建过程中,依赖被下载,它可以在我的gradle缓存中找到,似乎出于某种原因,Spring Boot的Gradle插件在引导修复任务中没有包含它。

Eclipse中也存在这种依赖关系,项目可以从那里运行。

你知道它为什么会丢失吗?

共有2个答案

郭博涉
2023-03-14

以下是一个快速修复,当错误被解决时。在你的gradle.build文件中尝试这个

jar {
baseName = 'gs-accessing-data-rest'
version = '0.1.0'
into('lib') {
    from 'oraDrv'
   }

}

其中oraDrv是一个文件夹,其中有您的自定义罐或丢失的罐。假设oraDrv是相对于build.gradle文件位置的。

齐起运
2023-03-14

这看起来像是Spring靴中的一个bug。我已经打开了一个问题,以便我们可以进行调查。谢谢你提醒我们。

 类似资料:
  • 我读了很多用依赖项构建可执行jar的解决方案(maven shade插件、maven dependency插件、maven assembly插件),所有这些插件都解压缩依赖项jar并将它们重新打包在可执行jar中。唯一一个将依赖项jar打包在可执行jar中的插件是一个jar插件,但是这个插件将其运行程序代码添加到可执行jar中。 有没有什么解决方案可以这样创建jar: 和解决方案起作用。

  • 我试图用Brazel建立一个围棋应用程序。我正在处理的是一个现有的私有GitHub repo(位置:),我的目标是从main.Go文件中创建一个二进制文件,该文件依赖于其他一些Go文件来实现它的方法。这是我的build.bazel文件,位于名为e2e的文件夹中,所有这些go文件都在这里: 这就是导入在main.go文件中的外观: 这是因为在主文件中导入了。为了包含导入,如果我将其添加到deps:中

  • 在Dockerfile中运行yarn install时无法获取node\u modules文件夹 docker-compose.yml package.json Dockferfile文件 docker-compose build时步骤RUN纱线安装的输出: 运行命令:docker compose运行web bash以进入容器 没有node_modules文件夹,但稍后在容器内运行时:纱线安装输出

  • 问题内容: 知道为什么我会收到此错误: persistence.xml mydatasource-ds.xml module.xml 问题答案: 错误的原因是您缺少依赖java:jboss / datasources / UserDS。使用Jboss 7.x +,您可以将这些数据源直接添加到您发现的应用服务器配置中。 独立配置和域配置之间的区别在于,独立配置仅针对具有该配置的一台应用服务器而设计。

  • 我有一个mvn项目,它包含对apache Commons-Lang3的依赖。我设法为这个jar文件生成了一个manifest.mf,它通过我的远程服务器上的java-jar.jar启动。然而,它不包括任何依赖项,我不知道为什么。 您可以看到,它正确地将依赖关系解析为commons-lang并将其放入清单中。但实际文件不见了。 有人知道为什么吗?

  • 问题内容: 我认为这没有什么区别,但我使用的是Python 2.7。 因此,我的问题的一般部分如下:我为每个项目使用一个单独的项目。我没有管理员访问权限,而且我也不想弄乱系统安装的软件包。自然,我想使用轮子来加快整个系统的软件包升级和安装。如何构建仅在特定范围内满足依赖关系的轮子? 具体来说,发行 失败于 因为不存在全局和在构建轮,当工作与安装的是积极的,这似乎是一个可怕的想法有车轮依赖于特定的版