9

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)

2
  • did you check the jars that were downloaded by maven if any of them contains WebInvocationPrivilegeEvaluator ? Commented Jun 5, 2015 at 21:14
  • Thank you! I have solved it using your advise. Solution was to add spring-security-web Commented Jun 5, 2015 at 21:26

4 Answers 4

21

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' } 
Sign up to request clarification or add additional context in comments.

Comments

14

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

Comments

5

for me I solved it by adding this dependancy :

<dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-messaging</artifactId> </dependency> 

Comments

0

WebInvocationPrivilegeEvaluator interface is present in

org.springframework.security.web.access package

spring-security-web-5.0.4.RELEASE.jar

Remove the existing jar files from .m2 folder and make a fresh build..

C:\Users\user.m2\repository\org\springframework\security\spring-security-web\5.0.4.RELEASE

I used version 5.., in your case 4..

It worked in my case, my problem has resolved

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.