Spring Security NoClassDefFoundError

22,197

Solution 1

Add dependency

    <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-web</artifactId>
        <version>4.0.1.RELEASE</version>
    </dependency>

Or gradle

dependencies {  
  compile 'org.springframework.security:spring-security-web:4.0.1.RELEASE'
}

Solution 2

Please add this org.springframework.security spring-security-web 4.0.1.RELEASE

Solution 3

for me I solved it by adding this dependancy :

<dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-messaging</artifactId>
        </dependency>
Share:
22,197
Admin
Author by

Admin

Updated on March 15, 2020

Comments

  • Admin
    Admin about 4 years

    Working on a Spring project and am learning to use Spring Security. The project was working but has suddenly decided no to. Can anyone shed some light as to why?

    WebInit.java

    package com.catalyst.Config;
    
    import javax.servlet.ServletContext;
    import javax.servlet.ServletException;
    import javax.servlet.ServletRegistration.Dynamic;
    
    import org.springframework.web.WebApplicationInitializer;
    import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
    import org.springframework.web.servlet.DispatcherServlet;
    
    public class WebInit implements WebApplicationInitializer
    {
        @Override
        public void onStartup(ServletContext servletContext) throws ServletException
        {
            Dynamic hServlet;
            AnnotationConfigWebApplicationContext hAnnoCTX;
    
            hAnnoCTX = new AnnotationConfigWebApplicationContext();
            hAnnoCTX.register(WebMVCConfig.class);
            hAnnoCTX.setServletContext(servletContext);
            hServlet = servletContext.addServlet("dispatcher", new DispatcherServlet(hAnnoCTX));
            hServlet.addMapping("/");
            hServlet.setLoadOnStartup(1);
        }
    }

    WebMVCConfig.java

    package com.catalyst.Config;
    
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.ComponentScan;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.web.servlet.config.annotation.EnableWebMvc;
    import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
    import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
    import org.springframework.web.servlet.view.JstlView;
    import org.springframework.web.servlet.view.UrlBasedViewResolver;
    
    @Configuration
    @ComponentScan("com.catalyst")
    @EnableWebMvc
    public class WebMVCConfig extends WebMvcConfigurerAdapter
    {
        @Bean
        public UrlBasedViewResolver setupViewResolver()
        {
            UrlBasedViewResolver hResolver;
            hResolver = new UrlBasedViewResolver();
            hResolver.setPrefix("/WEB-INF/JSP/");
            hResolver.setSuffix(".jsp");
            hResolver.setViewClass(JstlView.class);
            return(hResolver);
        }
    
        @Override
        public void addResourceHandlers(ResourceHandlerRegistry hRegistry)
        {
            hRegistry.addResourceHandler("/Resources/**").addResourceLocations("/WEB-INF/Resources/*");
        }
    }

    SpringSecurity.java

    package com.catalyst.Config;
    
    import org.springframework.context.annotation.Configuration;
    import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
    import org.springframework.security.config.annotation.web.builders.HttpSecurity;
    import org.springframework.security.config.annotation.web.builders.WebSecurity;
    import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
    import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
    
    @Configuration
    @EnableWebSecurity
    public class SpringSecurity extends WebSecurityConfigurerAdapter
    {
        
        @Override
        public void configure(WebSecurity web) throws Exception
        {
            web.ignoring().antMatchers("/", "/Error/**", "/Resources/**");
        }
        
        @Override
        protected void configure(HttpSecurity http) throws Exception
        {
            http
                .authorizeRequests()
                .anyRequest().authenticated()
                .and()
                .formLogin()
                    .loginPage("/Login").and()
                .httpBasic();
        }
        
        @Override
        protected void configure(AuthenticationManagerBuilder auth) throws Exception
        {
            auth
                .inMemoryAuthentication()
                .withUser("user").password("password").roles("USER").and()
                .withUser("admin").password("password").roles("USER", "ADMIN");
        }
    }

    pom.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
        <groupId>com.catalyst</groupId>
        <artifactId>prjPersonal</artifactId>
        <version>1.0_Personal</version>
        <packaging>war</packaging>
    
        <name>prjPersonal</name>
    
        <properties>
            <endorsed.dir>${project.build.directory}/endorsed</endorsed.dir>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
            <!-- Versions -->
            <jstl.version>1.2</jstl.version>
            <mysql.version>5.1.35</mysql.version>
            <spring.version>4.0.1.RELEASE</spring.version>
            <hibernate.version>5.0.0.CR1</hibernate.version>
        </properties>
        
        <dependencies>
            
            <dependency>
                <groupId>javax</groupId>
                <artifactId>javaee-web-api</artifactId>
                <version>7.0</version>
                <scope>provided</scope>
            </dependency>
            
            <!-- Spring -->
            <dependency>
    	    <groupId>org.springframework</groupId>
    	    <artifactId>spring-core</artifactId>
    	    <version>4.1.6.RELEASE</version>
            </dependency>
     
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-web</artifactId>
                <version>4.1.6.RELEASE</version>
            </dependency>
     
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-webmvc</artifactId>
                <version>4.1.6.RELEASE</version>
            </dependency>
            
            <dependency>
                <groupId>org.springframework.security</groupId>
                <artifactId>spring-security-core</artifactId>
                <version>4.0.1.RELEASE</version>
            </dependency>
            
            <dependency>
                <groupId>org.springframework.security</groupId>
                <artifactId>spring-security-config</artifactId>
                <version>4.0.1.RELEASE</version>
            </dependency>
            
            <!-- JSTL -->
            <dependency>  
                <groupId>jstl</groupId>  
                <artifactId>jstl</artifactId>  
                <version>${jstl.version}</version>  
            </dependency>
            
            <!-- Hibernate -->
            <dependency>
                <groupId>org.hibernate</groupId>
                <artifactId>hibernate-core</artifactId>
                <version>${hibernate.version}</version>
            </dependency>
            
            <!-- MySQL -->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>${mysql.version}</version>
            </dependency>
            
        </dependencies>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.1</version>
                    <configuration>
                        <source>1.7</source>
                        <target>1.7</target>
                        <compilerArguments>
                            <endorseddirs>${endorsed.dir}</endorseddirs>
                        </compilerArguments>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-war-plugin</artifactId>
                    <version>2.3</version>
                    <configuration>
                        <failOnMissingWebXml>false</failOnMissingWebXml>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-dependency-plugin</artifactId>
                    <version>2.6</version>
                    <executions>
                        <execution>
                            <phase>validate</phase>
                            <goals>
                                <goal>copy</goal>
                            </goals>
                            <configuration>
                                <outputDirectory>${endorsed.dir}</outputDirectory>
                                <silent>true</silent>
                                <artifactItems>
                                    <artifactItem>
                                        <groupId>javax</groupId>
                                        <artifactId>javaee-endorsed-api</artifactId>
                                        <version>7.0</version>
                                        <type>jar</type>
                                    </artifactItem>
                                </artifactItems>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </build>
    
    </project>

    Tomcat Error

    HTTP Status 500 - Servlet.init() for servlet dispatcher threw exception
    root cause:
    
    java.lang.NoClassDefFoundError: org/springframework/security/web/access/WebInvocationPrivilegeEvaluator
    	java.lang.Class.getDeclaredMethods0(Native Method)
    	java.lang.Class.privateGetDeclaredMethods(Class.java:2701)
    	java.lang.Class.getDeclaredMethods(Class.java:1975)
    	org.springframework.util.ReflectionUtils.doWithMethods(ReflectionUtils.java:467)
    	org.springframework.util.ReflectionUtils.doWithMethods(ReflectionUtils.java:451)
    	org.springframework.util.ReflectionUtils.getUniqueDeclaredMethods(ReflectionUtils.java:512)
    	org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.getTypeForFactoryMethod(AbstractAutowireCapableBeanFactory.java:663)
    	org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.predictBeanType(AbstractAutowireCapableBeanFactory.java:593)
    	org.springframework.beans.factory.support.AbstractBeanFactory.isFactoryBean(AbstractBeanFactory.java:1396)
    	org.springframework.beans.factory.support.DefaultListableBeanFactory.doGetBeanNamesForType(DefaultListableBeanFactory.java:382)
    	org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanNamesForType(DefaultListableBeanFactory.java:353)
    	org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeansOfType(DefaultListableBeanFactory.java:463)
    	org.springframework.context.support.AbstractApplicationContext.getBeansOfType(AbstractApplicationContext.java:1071)
    	org.springframework.beans.factory.BeanFactoryUtils.beansOfTypeIncludingAncestors(BeanFactoryUtils.java:277)
    	org.springframework.web.servlet.DispatcherServlet.initHandlerMappings(DispatcherServlet.java:549)
    	org.springframework.web.servlet.DispatcherServlet.initStrategies(DispatcherServlet.java:463)
    	org.springframework.web.servlet.DispatcherServlet.onRefresh(DispatcherServlet.java:452)
    	org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:550)
    	org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:484)
    	org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:136)
    	javax.servlet.GenericServlet.init(GenericServlet.java:158)
    	org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
    	org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
    	org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:617)
    	org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:518)
    	org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1091)
    	org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:668)
    	org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpoint.java:2463)
    	org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:2452)
    	java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    	java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    	org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    	java.lang.Thread.run(Thread.java:745)