我有可运行的JAR A,其中包含interface:
[0, 0, 0]
在JAR A中我也有一个类试图自动装配FooInterface implmenetation:
interface FooInterface {
void foo();
...
}
在其他项目B中,我将jar A作为外部库并实现了FooInterface:
class Other{
@Autowired
FooInterface fooInterfaceImplementation;
...
}
我尝试使用命令运行带有JAR B类的可运行A JAR:
@Component
class BarClass implements FooInterface {
void foo(){...}
...
}
但它以以下例外结束:
java -jar A.jar -cp B.jar
是否有可能以这种方式自动装配所需的bean?
任何帮助高度赞赏。
答案 0 :(得分:1)
是的,为了从类路径JAR文件中检测/扫描bean,您需要使用类级别注释@ComponentScan(basePackages="com.ocado")
将包添加到Spring启动启动器类。
答案 1 :(得分:1)
如果您尝试同时使用-jar
和-cp
,则无法进行此操作。使用-cp
时会忽略-jar
。
如果你想在类路径上有多个jar,你可以使用-cp
传递它们。然后,您还必须提供要启动的主类的名称。鉴于您似乎使用的是Spring Boot,可能如下所示:
java -cp A.jar:B.jar org.springframework.boot.loader.JarLauncher
你可能也对Spring Boot的PropertiesLauncher
感兴趣,它允许你创建一个带有可配置类路径的可执行jar。