这是问题所在,我有一个项目 X,它使用另一个项目 Y 的服务。Y 使用 eclipse 导出为 jar 文件并添加到项目 X 构建路径中。碰巧弹簧在X中加载“classService”的类无法加载,因为在Y的StringEncryptorService中的remoteService的构造函数中初始化依赖项有问题。它说明了 Y 中一个 jar 中的类。没有编译错误,所以构建路径很好。提前谢谢。任何答案将不胜感激
INFO: Initializing Spring root WebApplicationContext
ERROR org.springframework.web.context.ContextLoader:319 - Context initialization failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'classService': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.package.common.security.StringEncryptorService com.package.service.classService.stringEncryptorService; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'stringEncryptorService' defined in URL [jar:file:/C:/Users/user/git/project/Project/WEB-INF/lib/package-common-0.111.jar!/com/package/common/security/StringEncryptorService.class]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [com.package.common.security.StringEncryptorService]: Constructor threw exception; nested exception is java.lang.NoClassDefFoundError: org/apache/commons/codec/binary/Base64
我使用了 Y 项目中的 commons-codec-1.8。我知道我可以将它的 jar 文件移动到 Project X 的引用库,但我想知道我是否可以在 Y 中制作它,这样当我制作其他项目时,比如 A,我可以将 y 作为 jar 导出到 A。
编辑:我认为问题是弹簧找不到通用编解码器。因为它在 Project Y 的库下,所以我导出到 Project X 的项目。我们可以做点什么,让 Project X 中的 spring 可以扫描 Project Y 的库吗?或者专门到 common-codec.jar 的库。如果我说错了,请纠正我。
答:要么通过将 jar 复制到 X 的类路径中显式添加库,要么将其作为外部 jar 添加到项目中,或者在 Eclipse 中将项目添加到类路径中。因为我想让库 common-codec.jar 始终在 Project Y 库中,我们只是添加到 Project X 的 application-context.xml 中:
<bean id="StringEncryptorService" class="PackagePathInProjectY.StringEncryptorService"></bean>
特别感谢:Harish Kumar。谢谢哥们..