【问题标题】:Exception starting filter springSecurityFilterChain java.lang.NoClassDefFoundError异常启动过滤器 springSecurityFilterChain java.lang.NoClassDefFoundError
【发布时间】:2013-09-28 08:59:00
【问题描述】:

我在使用 Spring Security 时遇到了一些奇怪的行为。

当我加载应用程序时出现异常

严重:异常启动过滤器 springSecurityFilterChain java.lang.NoClassDefFoundError: org/springframework/core/convert/support/PropertyTypeDescriptor

WEB.XML:

<web-app>
<display-name>Archetype Created Web Application</display-name>
 <filter>
  <filter-name>springSecurityFilterChain</filter-name>
  <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
  <filter-name>springSecurityFilterChain</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping> 
 <servlet>
 <servlet-name>default</servlet-name>
    <servlet-class> org.apache.catalina.servlets.DefaultServlet </servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/applicationSecurityContext.xml</param-value>
    </init-param>
   <load-on-startup>1</load-on-startup>       
</servlet>
<servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

POM.XML:

      <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>3.2.4.RELEASE</version>
    </dependency>  
      <dependency>
    <groupId>org.springframework.security</groupId>
    <artifactId>spring-security-core</artifactId>
    <version>3.1.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-web</artifactId>
<version>3.1.4.RELEASE</version>
    </dependency>

谢谢

【问题讨论】:

  • 对于初学者来说,混合 Spring Security 版本(3.1.0 和 3.1.4)永远不要混合不同版本的框架。修复该问题,同时确保不要引入 Spring jar 的混合版本(检查 mvn dependency:tree),如果是这样,请明确定义您要使用的版本。

标签: java spring maven spring-security


【解决方案1】:

根据PropertyTypeDescriptor and Spring 3.1.2,问题在于spring-core 3.1.0.RELEASE 已删除PropertyTypeDescriptor

spring-security-core 3.1.0.RELEASE 依赖于spring-core 3.0.6.RELEASE,就像pom 状态一样。

因此出现 NoClassDefFoundError。

我建议降级到spring-core to 3.0.6.RELEASE

spring-security 几天前将依赖更新为 spring 3.2.4.RELEASE。 看看github里的cmetshttps://github.com/spring-projects/spring-security

“SEC-2294:23 天前将 Spring 版本更新到 3.2.4.RELEASE”

【讨论】:

    【解决方案2】:

    EnvironmentAware 位于 spring-context-3.1.1.RELEASE.jar 中,因此您缺少那个。

    还要重新检查您的 Maven POM 文件,这样您就不会丢失任何其他 Spring 库,例如 spring-web、spring-webmvc(如果找到了 DispatcherServlet 类,您可能会拥有这些)、spring-orm(如果您使用类似 ORM) Hibernate、spring-jms(如果你使用 JMS 等)

    【讨论】:

      猜你喜欢
      • 2013-04-05
      • 2012-02-10
      • 2015-09-03
      • 1970-01-01
      • 2014-05-28
      • 1970-01-01
      • 2013-04-29
      • 2016-02-17
      • 2014-10-27
      相关资源
      最近更新 更多