基本上我有这个Outer.jar,在其中声明是一个带有组件扫描的应用程序上下文:
<context:component-scan
base-package="x.y.z.class" />
但是这个x.y.z.class
位于inner.jar中,它是outer.jar的依赖项,
我收到错误,找不到类.../Outer.jar/x/y/z/class
,如何指定签入inner.jar?
更新: 将应用程序上下文初始化为:
org.springframework.context.ApplicationContext ctx =
new ClassPathXmlApplicationContext("applicationContext.xml");
exception: I/O failure during classpath scanning; nested exception is java.io.FileNotFoundException: ..\default\deploy\test.war\WEB-INF\lib\inner.jar\x\y\z
and it says inner.jar/x/y/z/class not found
Outer.jar将inner.jar作为依赖
答案 0 :(得分:6)
确保在类路径中存在inner.jar(或任何你命名的内容)(通过添加到maven依赖项,eclipse项目设置,使用-cp jvm命令行参数等),并且只需引用包名称您希望包含在inner.jar中的类。
另外,请确保您不要混淆jar,基本包和完全限定的类名。如果我在Blah.jar中有一个类com.mycoolcompany.service.Booya
,通常我只需要做
<context:component-scan base-package="com.mycoolcompany.service.*" />
确保Blah.jar位于父项目的类路径
上答案 1 :(得分:2)
如果您确定该jar位于类路径下,但您的课程仍未自动装配。
您确定这些类是否正确注释?
因为当你说component-scan
时会发生什么,spring试图找到用@Component
注释的类或者像@Service
等等的类型的子类型。
我猜这是你的第三方依赖,可能没有注释类。
在这种情况下,您应该在应用程序上下文中手动定义beans
。
HTH