无法自省Class [org.springframework.security.config.annotation.web.configuration.WebSecurityConfiguration]

时间:2018-12-10 22:33:38

标签: java spring-mvc spring-boot

我使用Spring Boot 2.1.1创建了一个项目,当我尝试将其抬起时,出现以下错误:

  

2018-12-10 19:23:14.837错误8096 --- [main] o.s.boot.SpringApplication:应用程序运行失败

     

java.lang.IllegalStateException:处理错误的条件   org.springframework.boot.autoconfigure.context.PropertyPlaceholderAutoConfiguration.propertySourcesPlaceholderConfigurer     在   org.springframework.boot.autoconfigure.condition.SpringBootCondition.matches(SpringBootCondition.java:64)   〜[spring-boot-autoconfigure-2.1.1.RELEASE.jar:2.1.1.RELEASE]在   org.springframework.context.annotation.ConditionEvaluator.shouldSkip(ConditionEvaluator.java:108)   〜[spring-context-5.1.3.RELEASE.jar:5.1.3.RELEASE]在   org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.loadBeanDefinitionsForBeanMethod(ConfigurationClassBeanDefinitionReader.java:181)   〜[spring-context-5.1.3.RELEASE.jar:5.1.3.RELEASE]在   org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.loadBeanDefinitionsForConfigurationClass(ConfigurationClassBeanDefinitionReader.java:141)   〜[spring-context-5.1.3.RELEASE.jar:5.1.3.RELEASE]在   org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.loadBeanDefinitions(ConfigurationClassBeanDefinitionReader.java:117)   〜[spring-context-5.1.3.RELEASE.jar:5.1.3.RELEASE]在   org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions(ConfigurationClassPostProcessor.java:327)   〜[spring-context-5.1.3.RELEASE.jar:5.1.3.RELEASE]在   org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor.java:232)   〜[spring-context-5.1.3.RELEASE.jar:5.1.3.RELEASE]在   org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanDefinitionRegistryPostProcessors(PostProcessorRegistrationDelegate.java:275)   〜[spring-context-5.1.3.RELEASE.jar:5.1.3.RELEASE]在   org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:95)   〜[spring-context-5.1.3.RELEASE.jar:5.1.3.RELEASE]在   org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:691)   〜[spring-context-5.1.3.RELEASE.jar:5.1.3.RELEASE]在   org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:528)   〜[spring-context-5.1.3.RELEASE.jar:5.1.3.RELEASE]在   org.springframework.boot.SpringApplication.refresh(SpringApplication.java:775)   的[spring-boot-2.1.1.RELEASE.jar:2.1.1.RELEASE]   org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:397)   的[spring-boot-2.1.1.RELEASE.jar:2.1.1.RELEASE]   org.springframework.boot.SpringApplication.run(SpringApplication.java:316)   的[spring-boot-2.1.1.RELEASE.jar:2.1.1.RELEASE]   org.springframework.boot.SpringApplication.run(SpringApplication.java:1260)   的[spring-boot-2.1.1.RELEASE.jar:2.1.1.RELEASE]   org.springframework.boot.SpringApplication.run(SpringApplication.java:1248)   的[spring-boot-2.1.1.RELEASE.jar:2.1.1.RELEASE]   atuq.FrigorificoApplication.main(FrigorificoApplication.java:14)   [classes /:na]原因:java.lang.IllegalStateException:无法执行   内省级   [org.springframework.security.config.annotation.web.configuration.WebSecurityConfiguration]   从ClassLoader [sun.misc.Launcher$AppClassLoader@73d16e93]中   org.springframework.util.ReflectionUtils.getDeclaredMethods(ReflectionUtils.java:686)   〜[spring-core-5.1.3.RELEASE.jar:5.1.3.RELEASE]在   org.springframework.util.ReflectionUtils.doWithMethods(ReflectionUtils.java:583)   〜[spring-core-5.1.3.RELEASE.jar:5.1.3.RELEASE]在   org.springframework.util.ReflectionUtils.doWithMethods(ReflectionUtils.java:568)   〜[spring-core-5.1.3.RELEASE.jar:5.1.3.RELEASE]在   org.springframework.util.ReflectionUtils.getUniqueDeclaredMethods(ReflectionUtils.java:626)   〜[spring-core-5.1.3.RELEASE.jar:5.1.3.RELEASE]在   java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1660)   〜[na:1.8.0_181]在   org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.getTypeForFactoryMethod(AbstractAutowireCapableBeanFactory.java:721)   〜[spring-beans-5.1.3.RELEASE.jar:5.1.3.RELEASE]在   org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.determineTargetType(AbstractAutowireCapableBeanFactory.java:662)   〜[spring-beans-5.1.3.RELEASE.jar:5.1.3.RELEASE]在   org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.predictBeanType(AbstractAutowireCapableBeanFactory.java:630)   〜[spring-beans-5.1.3.RELEASE.jar:5.1.3.RELEASE]在   org.springframework.beans.factory.support.AbstractBeanFactory.isFactoryBean(AbstractBeanFactory.java:1518)   〜[spring-beans-5.1.3.RELEASE.jar:5.1.3.RELEASE]在   org.springframework.beans.factory.support.AbstractBeanFactory.isFactoryBean(AbstractBeanFactory.java:1023)   〜[spring-beans-5.1.3.RELEASE.jar:5.1.3.RELEASE]在   org.springframework.boot.autoconfigure.condition.BeanTypeRegistry.addBeanTypeForNonAliasDefinition(BeanTypeRegistry.java:195)   〜[spring-boot-autoconfigure-2.1.1.RELEASE.jar:2.1.1.RELEASE]在   org.springframework.boot.autoconfigure.condition.BeanTypeRegistry.addBeanTypeForNonAliasDefinition(BeanTypeRegistry.java:159)   〜[spring-boot-autoconfigure-2.1.1.RELEASE.jar:2.1.1.RELEASE]在   org.springframework.boot.autoconfigure.condition.BeanTypeRegistry.addBeanType(BeanTypeRegistry.java:152)   〜[spring-boot-autoconfigure-2.1.1.RELEASE.jar:2.1.1.RELEASE]在   org.springframework.boot.autoconfigure.condition.BeanTypeRegistry.updateTypesIfNecessary(BeanTypeRegistry.java:140)   〜[spring-boot-autoconfigure-2.1.1.RELEASE.jar:2.1.1.RELEASE]在   java.util.Iterator.forEachRemaining(Iterator.java:116)〜[na:1.8.0_181]     在   org.springframework.boot.autoconfigure.condition.BeanTypeRegistry.updateTypesIfNecessary(BeanTypeRegistry.java:135)   〜[spring-boot-autoconfigure-2.1.1.RELEASE.jar:2.1.1.RELEASE]在   org.springframework.boot.autoconfigure.condition.BeanTypeRegistry.getNamesForType(BeanTypeRegistry.java:97)   〜[spring-boot-autoconfigure-2.1.1.RELEASE.jar:2.1.1.RELEASE]在   org.springframework.boot.autoconfigure.condition.OnBeanCondition.collectBeanNamesForType(OnBeanCondition.java:298)   〜[spring-boot-autoconfigure-2.1.1.RELEASE.jar:2.1.1.RELEASE]在   org.springframework.boot.autoconfigure.condition.OnBeanCondition.getBeanNamesForType(OnBeanCondition.java:289)   〜[spring-boot-autoconfigure-2.1.1.RELEASE.jar:2.1.1.RELEASE]在   org.springframework.boot.autoconfigure.condition.OnBeanCondition.getBeanNamesForType(OnBeanCondition.java:278)   〜[spring-boot-autoconfigure-2.1.1.RELEASE.jar:2.1.1.RELEASE]在   org.springframework.boot.autoconfigure.condition.OnBeanCondition.getMatchingBeans(OnBeanCondition.java:189)   〜[spring-boot-autoconfigure-2.1.1.RELEASE.jar:2.1.1.RELEASE]在   org.springframework.boot.autoconfigure.condition.OnBeanCondition.getMatchOutcome(OnBeanCondition.java:160)   〜[spring-boot-autoconfigure-2.1.1.RELEASE.jar:2.1.1.RELEASE]在   org.springframework.boot.autoconfigure.condition.SpringBootCondition.matches(SpringBootCondition.java:47)   〜[spring-boot-autoconfigure-2.1.1.RELEASE.jar:2.1.1.RELEASE] ... 16   省略了常见的框架造成原因:java.lang.NoClassDefFoundError:   javax / servlet / Filter在java.lang.Class.getDeclaredMethods0(本机   方法)〜[na:1.8.0_181]在   java.lang.Class.privateGetDeclaredMethods(Class.java:2701)   〜[na:1.8.0_181]在   java.lang.Class.getDeclaredMethods(Class.java:1975)〜[na:1.8.0_181]     在   org.springframework.util.ReflectionUtils.getDeclaredMethods(ReflectionUtils.java:668)   〜[spring-core-5.1.3.RELEASE.jar:5.1.3.RELEASE] ... 38个常见框架   省略的原因:java.lang.ClassNotFoundException:   javax.servlet.Filter位于   java.net.URLClassLoader.findClass(URLClassLoader.java:381)   〜[na:1.8.0_181]在   java.lang.ClassLoader.loadClass(ClassLoader.java:424)〜[na:1.8.0_181]     在sun.misc.Launcher $ AppClassLoader.loadClass(Launcher.java:349)   〜[na:1.8.0_181]在   java.lang.ClassLoader.loadClass(ClassLoader.java:357)〜[na:1.8.0_181]     ...省略了42个共同的框架

paso el 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>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.1.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>atuq</groupId>
    <artifactId>frigorifico</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>war</packaging>
    <name>frigorifico</name>
    <description>Frigorifico Malargue</description>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-mail</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>


        <dependency>
            <groupId>io.jsonwebtoken</groupId>
            <artifactId>jjwt</artifactId>
            <version>0.9.0</version>
            <type>jar</type>
        </dependency>

        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-collections4</artifactId>
            <version>4.1</version>
            <type>jar</type>
        </dependency>
        <dependency>
            <groupId>commons-collections</groupId>
            <artifactId>commons-collections</artifactId>
            <version>3.2.2</version>
            <type>jar</type>
        </dependency>

    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>


</project>

5 个答案:

答案 0 :(得分:4)

如果您的POM中具有spring-boot-starter-tomcat的依赖项,请删除其作用域部分。

现有:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-tomcat</artifactId>
    <scope>provided</scope>
</dependency>

新功能:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-tomcat</artifactId>
</dependency>

答案 1 :(得分:0)

该错误很有帮助,因为它找不到所需的类javax.servlet.Filter,而拥有此类的常见方法是通过这种依赖关系:

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <scope>provided</scope>
        </dependency>

最终导致org.apache.tomcat.embed:tomcat-embed-core

我们在本地看到了此信息,因为从Intellij运行Spring Boot应用程序时,在“运行/调试配置”中没有勾选“包含具有“已提供”作用域的依赖项”选项。

答案 2 :(得分:0)

尝试将其添加到pom.xml:

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

它帮助了我。

答案 3 :(得分:-1)

我认为这种依赖性:

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

与此冲突:

<dependency>
    <groupId>org.springframework.security</groupId>
    <artifactId>spring-security-core</artifactId>
    <type>jar</type>
</dependency>

为什么需要最后一个?我认为您不需要它,因为您已经有了安全的入门软件,因此请将其删除。

答案 4 :(得分:-2)

我今天遇到了同样的问题。事实证明,该问题是由于主启动类未放在代码的最外层引起的。确保已在正确的位置定义了启动类。