我的工作区中有2个服务器,它们有一个公共代码。 - 我将它们称为ServerA
和ServerB
,以使其更简单。两台服务器都使用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
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
答案 0 :(得分:0)
虽然我在maven中排除了库中的spring依赖项 - 这就是为什么我的依赖树是干净的,但是它从我的工作区中打开的本地库中引入了旧版本的spring。关闭这些项目摆脱了错误。