gpt4 book ai didi

java - 在构建 jar 并运行该 jar 时,外部依赖包的 @ComponentScan 在 2.1.x 中不起作用

转载 作者:行者123 更新时间:2023-11-30 01:51:39 25 4
gpt4 key购买 nike

我在使用 spring boot 2.1.x.RELEASE 时遇到问题,因为它没有在组件扫描中扫描基础包,但它在 2.0.x 中工作得很好。

@ComponentScan(basePackages = { "com.app.base*", "com.app.child.*" })

使用创建构建时

mvn clean package

它的 jar 已创建,但运行该 jar 时,它没有从基本外部存储库加载 bean。

java -jar child.jar

异常(exception):

ConfigServletWebServerApplicationContext : Exception encountered during context initialization 
- cancelling refresh attempt: org.springframework.beans.factory.BeanDefinitionStoreException:
Failed to parse configuration class

[com.app.child.UserApiApplication]; 嵌套异常是 java.io.FileNotFoundException: 类路径资源 [com/app/base/service/BaseService.class] 无法打开,因为它不存在

我将 base.jar 添加到子项目的 lib/base.jar 中。以下是pom.xml

<dependency>
<groupId>com.app</groupId>
<artifactId>base</artifactId>
<version>0.2</version>
</dependency>
<repository>
<id>myRepo</id>
<url>file://${basedir}/lib</url>
</repository>

用于将base.jar部署到我的本地存储库

 mvn deploy:deploy-file -DgroupId=com.app -DartifactId=base-Dversion=0.2 -Durl=file:./myRepo -DrepositoryId=myRepo -DupdateReleaseInfo=true -Dfile=lib/base-0.2.jar

当我从 STS 运行应用程序时,组件扫描运行良好。但是当我创建构建并尝试运行 jar 时,它会抛出错误。

我还使用

分解了 child.jar
jar -tf child.jar

base.jar 就在列表中。

最佳答案

很难说到底是什么问题。首先,您可以像这样使用 ComponentScan

@ComponentScan(basePackages = { "com.app.base", "com.app.child" })

参见Spring Framework ComponentScan

在它旁边,看起来您正在尝试运行一个不是 fat jar 的 java 文件,或者您没有将期望的类设置到类路径中。

您可以通过在调用中添加类路径来添加此类。

java -cp <path/to/base.jar> -jar child.jar

尝试一下。如果这有效,至少你有一个提示,你的base.jar没有正确加载。

关于java - 在构建 jar 并运行该 jar 时,外部依赖包的 @ComponentScan 在 2.1.x 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55804584/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com