2

这是问题所在,我有一个项目 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。谢谢哥们..


4

2 回答 2

0

org/apache/commons/codec/binary/Base64在你的项目中没有找到,请在X项目的构建路径中添加commons-codec-1.8.jar,另一种方法是在你导出项目的时候记得添加commons-项目 Y 中的 codec-1.8.jar 一起。

于 2013-05-30T02:06:19.413 回答
0

您部署到 tomcat 的项目中的类路径肯定存在问题。你能检查一下 WEB-INF/lib 是否有这个库吗?如果您将项目部署为战争,那么在构建战争或项目 X 时,应该捆绑两个库,并且当战争在 tomcat 上爆炸时,应该在类路径中找到 Y 库和公共编解码器。您可以将来自 Porject Y 的公共编解码器捆绑为构建的一部分。

哈里什

于 2013-05-30T05:02:27.840 回答