【问题标题】:NoSuchMethodError when compiling in Eclipse with Spring IDE使用 Spring IDE 在 Eclipse 中编译时出现 NoSuchMethodError
【发布时间】:2013-07-11 11:50:42
【问题描述】:

我有一个安装了 Spring IDE 的基于 Eclipse Juno 的开发环境。我的项目也使用 Spring Security。我使用的 Spring 版本是 2.5.5,Spring Security 是 2.0.6。现在,在将 Spring IDE 从 3.1.0 更新到 3.3.0 之后,当 Spring 编译器尝试编译这一行时,我得到了 NoSuchMethodError:

<security:authentication-provider user-service-ref="userDetailsService" />

<bean id="userDetailsService" class="com.mycompany.security.MyUserDetailsService">
    <property name="daoFactory" ref="DaoFactory" />
</bean>

MyUserDetailsS​​ervice 实现 UserDetailsServiceInitializingBean

文件的schemaLocation已定义为:

xsi:schemaLocation="http://www.springframework.org/schema/beans 
        http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
        http://www.springframework.org/schema/security 
        http://www.springframework.org/schema/security/spring-security-2.0.6.xsd"

堆栈跟踪如下所示:

!MESSAGE Error occured processing '/Server/WEB-INF/business-layer-context.xml'
!STACK 0
java.lang.NoSuchMethodError: org.springframework.beans.factory.support.BeanDefinitionBuilder.addConstructorArg(Ljava/lang/Object;)Lorg/springframework/beans/factory/support/BeanDefinitionBuilder;
at org.springframework.security.config.AuthenticationProviderBeanDefinitionParser.parse(AuthenticationProviderBeanDefinitionParser.java:88)
at org.springframework.beans.factory.xml.NamespaceHandlerSupport.parse(NamespaceHandlerSupport.java:74)
at org.springframework.ide.eclipse.beans.core.internal.model.namespaces.DelegatingNamespaceHandlerResolver$ElementTrackingNamespaceHandler.parse(DelegatingNamespaceHandlerResolver.java:177)
at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1427)
at org.springframework.ide.eclipse.beans.core.internal.model.BeansConfig$ErrorSuppressingBeanDefinitionParserDelegate.parseCustomElement(BeansConfig.java:1400)
at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1417)
at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.parseBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:187)
at org.springframework.ide.eclipse.beans.core.internal.model.BeansConfig$ToolingFriendlyBeanDefinitionDocumentReader.doRegisterBeanDefinitions(BeansConfig.java:1330)
at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.registerBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:110)
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.registerBeanDefinitions(XmlBeanDefinitionReader.java:494)
at org.springframework.ide.eclipse.beans.core.internal.model.BeansConfig$2.registerBeanDefinitions(BeansConfig.java:402)
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:391)
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:335)
at org.springframework.ide.eclipse.beans.core.internal.model.BeansConfig$2.loadBeanDefinitions(BeansConfig.java:388)
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:303)
at org.springframework.ide.eclipse.beans.core.internal.model.BeansConfig$3.call(BeansConfig.java:445)
at org.springframework.ide.eclipse.beans.core.internal.model.BeansConfig$3.call(BeansConfig.java:1)
at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)

使用 Ant 脚本编译应用程序并启动服务器时,一切正常,因此问题仅限于 Eclipse 和 Spring IDE。我的 Ant 和 Eclipse 配置都使用相同的 Spring 库。 addConstructorArg 方法似乎仍然存在于最新版本的 Spring 中,所以我对这个错误感到困惑。什么可能导致此问题?

【问题讨论】:

  • 你用的是哪个版本的spring?
  • @jax 我在问题中添加了userDetailsService bean。
  • @SREEPRASAD GOVINDANKUTTY 2.5.5 如问题所述。

标签: eclipse spring spring-ide


【解决方案1】:

我相信这是因为 Spring Tools Suite 带有它自己的 spring 库。因此,对于 XML 解析和验证,它不使用项目类路径中的库。

请看STS-3679

【讨论】:

  • 谢谢你,这解释得很好!
【解决方案2】:

检查您的 XML 配置文件以了解 Spring 和 Spring 安全性。 您在 xsi:schemaLocation 中有正确的 URL,例如:

    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd

【讨论】:

  • 我相信是的。我在问题中添加了 schemaLocation 部分。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-08-14
  • 1970-01-01
  • 2011-07-03
  • 2017-07-06
  • 2014-03-01
  • 1970-01-01
  • 2012-10-25
相关资源
最近更新 更多