【发布时间】:2018-08-23 03:22:30
【问题描述】:
我有一个带有 myapp-core 和 myapp-web 模块的 myapp 父 pom 类型的 maven 项目。 myapp-core 模块作为依赖项添加到 myapp-web。
myapp-core 模块中的所有类都位于根包 com.myapp.core 中,myapp-web 模块中的所有类都位于根包 com.myapp.web 中>
主要的 Application.java 也在 com.myapp.web 包中。由于我的核心模块根包不同,我将 ComponentScan 的通用基础包 "com.myapp" 包括在内,如下所示:
@Configuration
@ComponentScan(basePackages="com.myapp")
@EnableAutoConfiguration
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
现在令人惊讶的是,如果我使用 Run As -> Spring Boot App 运行这个应用程序,它运行良好。但是,如果我将它作为 Run As -> Java Application 运行,它会失败并显示错误说它找不到在 myapp-core 模块中定义的 bean。
如果我将我的 Application.java 移动到 com.myapp 包,它工作正常。
即使我也将它作为 Java 应用程序运行,它也应该可以工作,对吧?
【问题讨论】:
-
仅当类路径正确时,当您将其作为 Java 应用程序运行时。因此,请检查您的运行配置,如果包含所有依赖项。
-
我在这两种情况下都有相同的 pom 依赖项,并且我正在运行相同的 Application.java。
-
我不是在谈论 POM,我是在谈论类路径,IDE 正在为您的运行配置构建它。由于您没有指定 IDE,我无法为您提供更多帮助。
-
我可以说这不是因为类路径。因为如果我只是将 Application.java 移动到 com.myapp 包,它就可以正常工作。所以我想它必须与@ComponentScan 做点什么。
标签: java spring spring-boot