如何从外部库的弹簧文件加载弹簧上下文

时间:2018-01-22 13:22:20

标签: java xml spring eclipse maven

我的工作区中有2个服务器,它们有一个公共代码。 - 我将它们称为ServerAServerB,以使其更简单。两台服务器都使用Spring和Maven。 由于公共代码,我决定创建一个名为ServerLib的库来存储公共代码。 所以现在ServerLibrary还在其src/resources中包含spring xml文件,就像其他两个服务器一样。

在ServerA main方法中,我调用

List<String> springContextFiles = new ArrayList<String (Arrays.asList("spring/common.xml", "spring/serverAOnly.xml"));
context = new ClassPathXmlApplicationContext(springContextFiles.toArray(new String[springContextFiles.size()]));

当公共代码和spring xml文件在ServerA项目中时,这常常没有任何问题。现在我将它们放在ServerLib中,它不再起作用并抛出错误java.lang.NoSuchMethodError: org.springframework.beans.support.ResourceEditorRegistrar.<init>(Lorg/springframework/core/io/ResourceLoader;)V Error Log

ServerA和ServerLib都有Spring版本4.1.6.RELEASE。此外,我已尝试将spring文件放回ServerA,但将常见的Java文件保留在ServerLib中。它仍然会引发同样的错误。

我使用maven注入依赖项,但在这种情况下,ServerLib只是在java构建路径中添加为构建路径所需的项目。它被正确引用,因为我可以在eclipse中看到Maven Dependencies列表中的本地项目。

任何帮助将不胜感激!非常感谢提前。

注意: ServerA项目中的Spring版本如下。 Maven依赖树仅显示4.1.6.RELASE版本中的spring enter image description here

1 个答案:

答案 0 :(得分:0)

虽然我在maven中排除了库中的spring依赖项 - 这就是为什么我的依赖树是干净的,但是它从我的工作区中打开的本地库中引入了旧版本的spring。关闭这些项目摆脱了错误。