1

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の最新バージョンにもまだ存在しているようなので、このエラーに戸惑っています。この問題の原因は何ですか?

4

2 に答える 2

2

これは、Spring Tools Suite に独自の spring ライブラリが付属しているためだと思います。したがって、XML の解析と検証では、プロジェクトのクラスパスでライブラリを使用しません。

STS-3679をご覧ください

于 2014-02-13T14:12:32.890 に答える
1

Spring と Spring の両方のセキュリティについて、XML 構成ファイルを確認してください。次のように、xsi:schemaLocation に正しい URL がありますか。

    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
于 2013-10-03T08:16:34.923 に答える