Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何解决java.lang.NoClassDefFoundError:org.springframework.web.filter.CorsFilter_Spring_Spring Mvc_Spring Security Oauth2 - Fatal编程技术网

如何解决java.lang.NoClassDefFoundError:org.springframework.web.filter.CorsFilter

如何解决java.lang.NoClassDefFoundError:org.springframework.web.filter.CorsFilter,spring,spring-mvc,spring-security-oauth2,Spring,Spring Mvc,Spring Security Oauth2,我试图在SpringMVC中实现Oauth安全性 这是我基于java的配置: 公共类HelloWorldConfiguration扩展了WebMVCConfigureAdapter{ public void addResourceHandlers(final ResourceHandlerRegistry registry) { registry.addResourceHandler("/resources/**").addResourceLocations("/resourc

我试图在SpringMVC中实现Oauth安全性

这是我基于java的配置:

公共类HelloWorldConfiguration扩展了WebMVCConfigureAdapter{

 public void addResourceHandlers(final ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/resources/**").addResourceLocations("/resources/");
    }

 @Bean
    public DataSource dataSource() {
        final JndiDataSourceLookup dsLookup = new JndiDataSourceLookup();
        dsLookup.setResourceRef(true);
        DataSource dataSource = dsLookup.getDataSource("jdbc/peoplecheck");
        return dataSource;
    }
 @Bean
    public InternalResourceViewResolver viewResolver() {
        InternalResourceViewResolver viewResolver =
                        new InternalResourceViewResolver();
        viewResolver.setViewClass(JstlView.class);
        viewResolver.setPrefix("/WEB-INF/");
        viewResolver.setSuffix(".jsp");
        return viewResolver;
    }
}

这是我的pom:

<properties>
    <spring.version>4.1.2.RELEASE</spring.version>
    <jackson.version>1.9.13</jackson.version>
    <javax.validation.version>1.1.0.Final</javax.validation.version>
    <springsecurity.version>4.1.1.RELEASE</springsecurity.version>
    <springsecurityoauth2.version>2.0.10.RELEASE</springsecurityoauth2.version>
    <jackson.library>2.7.5</jackson.library>
</properties>

<dependencies>
  <dependency>
        <groupId>javax.validation</groupId>
        <artifactId>validation-api</artifactId>
        <version>${javax.validation.version}</version>
    </dependency>
    <!-- <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>3.8.1</version>
        <scope>test</scope>
    </dependency> -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-web</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-jdbc</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <!-- <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-core</artifactId>
        <version>2.4.1</version>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>2.4.1.1</version>
    </dependency> -->

        <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>${jackson.library}</version>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.dataformat</groupId>
        <artifactId>jackson-dataformat-xml</artifactId>
        <version>${jackson.library}</version>
    </dependency>


    <!-- Spring Security -->
    <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-web</artifactId>
        <version>${springsecurity.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-config</artifactId>
        <version>${springsecurity.version}</version>
    </dependency>

    <!-- Spring Security OAuth2-->
    <dependency>
        <groupId>org.springframework.security.oauth</groupId>
        <artifactId>spring-security-oauth2</artifactId>
        <version>${springsecurityoauth2.version}</version>
    </dependency>



    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>1.2.17</version>
    </dependency>


    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
        <version>1.6.1</version>
    </dependency>

    <dependency>
        <groupId>javax.mail</groupId>
        <artifactId>mail</artifactId>
        <version>1.5.0-b01</version>
    </dependency>

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-lang3</artifactId>
    <version>3.0</version>
</dependency>
    <!-- test -->
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.7</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.mockito</groupId>
        <artifactId>mockito-all</artifactId>
        <version>1.9.5</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.powermock</groupId>
        <artifactId>powermock-api-mockito</artifactId>
        <version>1.5.1</version>
    </dependency>
    <dependency>
        <groupId>org.powermock</groupId>
        <artifactId>powermock-module-junit4</artifactId>
        <version>1.5.1</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-test</artifactId>
        <version>${spring.version}</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>3.0.1</version>
        <scope>test</scope>
    </dependency>

4.1.2.1发布
1.9.13
1.1.0.1最终版本
4.1.1.1发布
2.0.10.1发布
2.7.5
javax.validation
验证api
${javax.validation.version}
org.springframework
弹簧芯
${spring.version}
org.springframework
弹簧网
${spring.version}
org.springframework
SpringWebMVC
${spring.version}
org.springframework
SpringJDBC
${spring.version}
com.fasterxml.jackson.core
杰克逊数据绑定
${jackson.library}
com.fasterxml.jackson.dataformat
jackson数据格式xml
${jackson.library}
org.springframework.security
spring安全网
${springsecurity.version}
org.springframework.security
spring安全配置
${springsecurity.version}
org.springframework.security.oauth
spring-security-oauth2
${springsecurityoauth2.version}
log4j
log4j
1.2.17
org.slf4j
slf4j-log4j12
1.6.1
javax.mail
邮政
1.5.0-b01
org.apache.commons
commons-lang3
3
朱尼特
朱尼特
4.7
测验
org.mockito
莫基托所有
1.9.5
测验
org.powermock
powermock api mockito
1.5.1
org.powermock
powermock-module-junit4
1.5.1
org.springframework
弹簧试验
${spring.version}
测验
javax.servlet
javax.servlet-api
3.0.1
测验
我正在使用WebSphereApplicationServer。每当我尝试运行应用程序时,我都会遇到这个异常,并且非常困惑缺少什么。 如果我只使用基于java的工具,它可以很好地工作,而我需要使用基于xml的工具来实现,或者两者兼而有之,因为我无法更改整个项目

00000056 DispatcherSer E org.springframework.web.servlet.FrameworkServlet initServletBean Context initialization failed
                                 Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [javax.servlet.Filter]: Factory method 'springSecurityFilterChain' threw exception; nested exception is java.lang.NoClassDefFoundError: org.springframework.web.filter.CorsFilter
    at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:189)
    at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:591)
    ... 109 more
Caused by: java.lang.NoClassDefFoundError: org.springframework.web.filter.CorsFilter
    at org.springframework.security.config.annotation.web.builders.FilterComparator.<init>(FilterComparator.java:74)
    at org.springframework.security.config.annotation.web.builders.HttpSecurity.<init>(HttpSecurity.java:121)
    at org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter.getHttp(WebSecurityConfigurerAdapter.java:178)
    at org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter.init(WebSecurityConfigurerAdapter.java:290)
    at org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter.init(WebSecurityConfigurerAdapter.java:67)
    at org.springframework.security.oauth2.config.annotation.web.configuration.AuthorizationServerSecurityConfiguration$$EnhancerBySpringCGLIB$$91437efb.init(<generated>)
00000056 Dispatchers E org.springframework.web.servlet.FrameworkServlet initServletBean上下文初始化失败
原因:org.springframework.beans.beans实例化异常:未能实例化[javax.servlet.Filter]:工厂方法“springSecurityFilterChain”引发异常;嵌套的异常是java.lang.NoClassDefFoundError:org.springframework.web.filter.CorsFilter
位于org.springframework.beans.factory.support.SimpleInstallationStrategy.instantiate(SimpleInstallationStrategy.java:189)
位于org.springframework.beans.factory.support.ConstructorResolver.InstanceUsingFactoryMethod(ConstructorResolver.java:591)
... 109更多
原因:java.lang.NoClassDefFoundError:org.springframework.web.filter.CorsFilter
位于org.springframework.security.config.annotation.web.builders.FilterComparator。(FilterComparator.java:74)
位于org.springframework.security.config.annotation.web.builders.HttpSecurity(HttpSecurity.java:121)
位于org.springframework.security.config.annotation.web.configuration.websecurityConfigureAdapter.getHttp(websecurityConfigureAdapter.java:178)
位于org.springframework.security.config.annotation.web.configuration.websecurityConfigureAdapter.init(websecurityConfigureAdapter.java:290)
位于org.springframework.security.config.annotation.web.configuration.websecurityConfigureAdapter.init(websecurityConfigureAdapter.java:67)
位于org.springframework.security.oauth2.config.annotation.web.configuration.AuthorizationServerSecurityConfiguration$$EnhancerBySpringCGLIB$$91437efb.init()

spring security 4.1.1.版本
使用
spring framework 4.3.1.版本
。你能试着更新你的spring版本吗


spring security 4.1.1.版本
使用
spring framework 4.3.1.版本
。你能试着更新你的spring版本吗


看来您的公司过滤器没有正确实施。你应该试试这个过滤器

public class CORSFilter extends OncePerRequestFilter {

    private final Logger LOG = LoggerFactory.getLogger(CORSFilter.class);

    @Override
    protected void doFilterInternal(HttpServletRequest req, HttpServletResponse res, FilterChain chain) throws ServletException, IOException {
        LOG.info("Adding CORS Headers ........................");        
        res.setHeader("Access-Control-Allow-Origin", "*");
        res.setHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS");
        res.setHeader("Access-Control-Max-Age", "3600");
        res.setHeader("Access-Control-Allow-Headers", "X-PINGOTHER,Content-Type,X-Requested-With,accept,Origin,Access-Control-Request-Method,Access-Control-Request-Headers,Authorization");
        res.addHeader("Access-Control-Expose-Headers", "xsrf-token");
        if ("OPTIONS".equals(req.getMethod())) {
         res.setStatus(HttpServletResponse.SC_OK);
        } else { 
         chain.doFilter(req, res);
        }        
    }
}
您可以参考工作示例
希望对您有所帮助。

您的公司过滤器似乎没有正确实施。你应该试试这个过滤器

public class CORSFilter extends OncePerRequestFilter {

    private final Logger LOG = LoggerFactory.getLogger(CORSFilter.class);

    @Override
    protected void doFilterInternal(HttpServletRequest req, HttpServletResponse res, FilterChain chain) throws ServletException, IOException {
        LOG.info("Adding CORS Headers ........................");        
        res.setHeader("Access-Control-Allow-Origin", "*");
        res.setHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS");
        res.setHeader("Access-Control-Max-Age", "3600");
        res.setHeader("Access-Control-Allow-Headers", "X-PINGOTHER,Content-Type,X-Requested-With,accept,Origin,Access-Control-Request-Method,Access-Control-Request-Headers,Authorization");
        res.addHeader("Access-Control-Expose-Headers", "xsrf-token");
        if ("OPTIONS".equals(req.getMethod())) {
         res.setStatus(HttpServletResponse.SC_OK);
        } else { 
         chain.doFilter(req, res);
        }        
    }
}
您可以参考工作示例
希望对您有所帮助。

您可以在这里@sundarajgovindasamy找到优秀的解决方案,同样的东西在没有基于xml的配置的情况下运行。。。我无法理解“工厂方法‘springSecurityFilterChain’引发的异常;嵌套异常是java.lang.NoClassDefFoundError:org.springframework.web.filter.CorsFilter”您是否阅读了我共享的链接?您可以在这里@sundarajGovindasamy找到优秀的解决方案同样的事情在没有基于xml的配置的情况下运行。。。我无法理解“工厂方法‘springSecurityFilterChain’引发的异常;嵌套异常是java.lang.NoClassDefFoundError:org.springframework.web.filter.CorsFilter”您是否阅读了我共享的链接?