我有一个可执行的JAR,我使用Spring Boot的Gradle插件构建。它在构建文件中具有以下依赖项:
的build.gradle
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 clean build
创建的工件不包含activemq-protobuf
jar,只包含其他activemq jar:
[] 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插件在bootRepackage
任务期间不包含它。
Eclipse中也存在这种依赖关系,项目可以从那里运行。
关于它为何失踪的任何想法?
答案 0 :(得分:1)
这看起来像Spring Boot中的一个错误。我打开了issue,以便我们进行调查。感谢您引起我们的注意。
答案 1 :(得分:0)
以下是快速修复,而错误已解决。 试试这个 在你的gradle.build文件中
jar {
baseName = 'gs-accessing-data-rest'
version = '0.1.0'
into('lib') {
from 'oraDrv'
}
}
其中oraDrv是您拥有自定义jar或缺少jar的文件夹。假设oraDrv相对于build.gradle文件位置。