Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.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
将Spring安全Java配置添加到Spring配置_Spring_Spring Security - Fatal编程技术网

将Spring安全Java配置添加到Spring配置

将Spring安全Java配置添加到Spring配置,spring,spring-security,Spring,Spring Security,我最近正在开发一个spring应用程序,我想将spring安全性添加到我的应用程序中 我有一个简单的页面,其中包含一个像符咒一样工作的登录表单,但是当我想将spring安全配置添加到应用程序时,我得到了一个错误 以下是我的SecurityConfig文件的代码: @Configuration @EnableWebSecurity public class SecurityConfig extends WebSecurityConfigurerAdapter { /*@Autowired pub

我最近正在开发一个spring应用程序,我想将spring安全性添加到我的应用程序中

我有一个简单的页面,其中包含一个像符咒一样工作的登录表单,但是当我想将spring安全配置添加到应用程序时,我得到了一个错误

以下是我的SecurityConfig文件的代码:

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {

/*@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
    auth
            .inMemoryAuthentication()
            .withUser("user").password("password").roles("USER");
}*/

@Override
protected void configure(HttpSecurity http) throws Exception {
    http
          .authorizeRequests()
            /*.antMatchers("/infermier*//**").hasRole("INFERMIER")
            .antMatchers("/docteur*//**").hasRole("DOCTEUR")
            .antMatchers("/user*//**").hasRole("USER")*/
            .anyRequest().authenticated()
          .and()
            .formLogin()
            .loginProcessingUrl("/login")
            .permitAll();
}

}
下面是日志:

Error invoking ServletContainerInitializer org.springframework.web.SpringServletContainerInitializer
java.lang.NoClassDefFoundError: org/springframework/security/config/annotation/web/configuration/WebSecurityConfigurerAdapter
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:760)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
    at org.glassfish.web.loader.WebappClassLoader.findClass(WebappClassLoader.java:1183)
    at org.glassfish.web.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1728)
    at org.glassfish.web.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1611)
    at configuration.WebInitializer.getRootConfigClasses(WebInitializer.java:12)
    at org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer.createRootApplicationContext(AbstractAnnotationConfigDispatcherServletInitializer.java:50)
    at org.springframework.web.context.AbstractContextLoaderInitializer.registerContextLoaderListener(AbstractContextLoaderInitializer.java:57)
    at org.springframework.web.context.AbstractContextLoaderInitializer.onStartup(AbstractContextLoaderInitializer.java:47)
    at org.springframework.web.servlet.support.AbstractDispatcherServletInitializer.onStartup(AbstractDispatcherServletInitializer.java:66)
    at org.springframework.web.SpringServletContainerInitializer.onStartup(SpringServletContainerInitializer.java:175)
    at org.apache.catalina.core.StandardContext.callServletContainerInitializers(StandardContext.java:5997)
    at com.sun.enterprise.web.WebModule.callServletContainerInitializers(WebModule.java:774)
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:5895)
    at com.sun.enterprise.web.WebModule.start(WebModule.java:691)
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:1041)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:1024)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:747)
    at com.sun.enterprise.web.WebContainer.loadWebModule(WebContainer.java:2278)
    at com.sun.enterprise.web.WebContainer.loadWebModule(WebContainer.java:1924)
    at com.sun.enterprise.web.WebApplication.start(WebApplication.java:139)
    at org.glassfish.internal.data.EngineRef.start(EngineRef.java:122)
  Startup of context /servicemed failed due to previous errors]]

[2014-08-13T12:57:16.429+0100] [glassfish 4.0] [SEVERE] [AS-WEB-CORE-00175] [javax.enterprise.web.core] [tid: _ThreadID=37 _ThreadName=admin-listener(4)] [timeMillis: 1407931036429] [levelValue: 1000] [[
  Exception during cleanup after start failed
org.apache.catalina.LifecycleException: Manager has not yet been started
    at org.apache.catalina.session.StandardManager.stop(StandardManager.java:934)
    at org.apache.catalina.core.StandardContext.stop(StandardContext.java:6099)
    at com.sun.enterprise.web.WebModule.stop(WebModule.java:720)
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:5916)
    at com.sun.enterprise.web.WebModule.start(WebModule.java:691)
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:1041)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:1024)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:747)
    at com.sun.enterprise.web.WebContainer.loadWebModule(WebContainer.java:2278)
    at com.sun.enterprise.web.WebContainer.loadWebModule(WebContainer.java:1924)
    at com.sun.enterprise.web.WebApplication.start(WebApplication.java:139)
    at org.glassfish.internal.data.EngineRef.start(EngineRef.java:122)
org.apache.catalina.LifecycleException: org.apache.catalina.LifecycleException: java.lang.NoClassDefFoundError: org/springframework/security/config/annotation/web/configuration/WebSecurityConfigurerAdapter
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:5920)
    at com.sun.enterprise.web.WebModule.start(WebModule.java:691)
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:1041)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:1024)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:747)
    at com.sun.enterprise.web.WebContainer.loadWebModule(WebContainer.java:2278)
    at com.sun.enterprise.web.WebContainer.loadWebModule(WebContainer.java:1924)
    at com.sun.enterprise.web.WebApplication.start(WebApplication.java:139)
    at org.glassfish.internal.data.EngineRef.start(EngineRef.java:122)
PS:我确实将其添加到MVC初始化器中:

@Override
    protected Class<?>[] getRootConfigClasses() {
        return new Class[] { AppConfig.class,SecurityConfig.class};
    }
@覆盖
受保护类[]getRootConfigClasses(){
返回新类[]{AppConfig.Class,SecurityConfig.Class};
}
确保类路径中有。显然,它在运行时丢失了


在这种情况下,在运行应用程序之前运行
mvn clean install
可以解决问题。

java.lang.NoClassDefFoundError。。。这意味着在类路径上找不到名为XYZ的类。添加到您的类路径。

@idursun给了我一个解决方案和一个很好的解释,我所做的配置没有任何问题(后来它实际工作了),问题是目标
文件夹被弄乱了,所以我用maven project工具清理了它,然后重新安装了所有东西(使用相同的工具),瞧,一切都很好

这是一个错误的maven project打包类型,在我的例子中:

<packaging>pom</packaging>
pom
而不是

<packaging>war</packaging>
战争

我使用maven,spring security config已经存在了,这就是它的实现方式否?我已经在pom.xml(我使用maven)中有spring security config依赖项,我仔细检查了外部库,并在该jar中找到了该类如果您确定所有必要的spring security jar都在war的WEB-INF库中,这可能是因为类路径中还有其他版本的spring security。我只有3.2.4.REALEASE版本,我检查了它。该类在编译时存在,但在运行时找不到。您可能需要检查运行时配置以查明真正的原因。老实说,我不知道怎么做,我正在使用Intellij,您能给我一些提示吗;)我要做的是进入Maven项目窗口,运行
clean
install
生命周期,然后再次尝试运行该项目。天哪,成功了,非常感谢,我花了大约3天的时间。嗨。哦,顺便说一句,你给我的解决方案,刚刚发生了什么?xD如果您不介意的话,可以添加它作为解决方案,并提供更多的解释:D可能
target
文件夹被弄乱了,所以请清理它,然后将pom文件中定义的所有内容再次放在一起修复了混乱:)