【发布时间】:2021-12-27 07:43:39
【问题描述】:
当我将它添加到我的应用程序类时
@Bean
HiddenHttpMethodFilter hiddenHttpMethodFilter() {
return new HiddenHttpMethodFilter();
}
我的应用程序无法启动并出现此错误:
2021-11-16 08:11:08.950 ERROR 70458 --- [main] os.boot.SpringApplication:应用程序运行失败
org.springframework.beans.factory.BeanDefinitionStoreException: 无法解析配置类 [com.paulcarron.learningspringboot.learningspringboot.LearningSpringBootApplication];嵌套异常是 java.lang.IllegalStateException: Failed to introspect annotated methods on class com.paulcarron.learningspringboot.learningspringboot.LearningSpringBootApplication 在 org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:189) ~[spring-context-5.3.12.jar:5.3.12] 在 org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions(ConfigurationClassPostProcessor.java:331) ~[spring-context-5.3.12.jar:5.3.12] 在 org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor.java:247) ~[spring-context-5.3.12.jar:5.3.12] 在 org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanDefinitionRegistryPostProcessors(PostProcessorRegistrationDelegate.java:311) ~[spring-context-5.3.12.jar:5.3.12] 在 org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:112) ~[spring-context-5.3.12.jar:5.3.12] 在 org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:746) ~[spring-context-5.3.12.jar:5.3.12] 在 org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:564) ~[spring-context-5.3.12.jar:5.3.12] 在 org.springframework.boot.web.reactive.context.ReactiveWebServerApplicationContext.refresh(ReactiveWebServerApplicationContext.java:64) ~[spring-boot-2.5.6.jar:2.5.6] 在 org.springframework.boot.SpringApplication.refresh(SpringApplication.java:754) ~[spring-boot-2.5.6.jar:2.5.6] 在 org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:434) ~[spring-boot-2.5.6.jar:2.5.6] 在 org.springframework.boot.SpringApplication.run(SpringApplication.java:338) ~[spring-boot-2.5.6.jar:2.5.6] 在 org.springframework.boot.SpringApplication.run(SpringApplication.java:1343) ~[spring-boot-2.5.6.jar:2.5.6] 在 org.springframework.boot.SpringApplication.run(SpringApplication.java:1332) ~[spring-boot-2.5.6.jar:2.5.6] 在 com.paulcarron.learningspringboot.learningspringboot.LearningSpringBootApplication.main(LearningSpringBootApplication.java:12) ~[main/:na] 原因:java.lang.IllegalStateException:无法自省 com.paulcarron.learningspringboot.learningspringboot.LearningSpringBootApplication 类上的注释方法 在 org.springframework.core.type.StandardAnnotationMetadata.getAnnotatedMethods(StandardAnnotationMetadata.java:162) ~[spring-core-5.3.12.jar:5.3.12] 原因:java.lang.IllegalStateException:无法自省 com.paulcarron.learningspringboot.learningspringboot.LearningSpringBootApplication 类上的注释方法
在 org.springframework.context.annotation.ConfigurationClassParser.retrieveBeanMethodMetadata(ConfigurationClassParser.java:403) ~[spring-context-5.3.12.jar:5.3.12] 在 org.springframework.context.annotation.ConfigurationClassParser.doProcessConfigurationClass(ConfigurationClassParser.java:326) ~[spring-context-5.3.12.jar:5.3.12] 在 org.springframework.context.annotation.ConfigurationClassParser.processConfigurationClass(ConfigurationClassParser.java:250) ~[spring-context-5.3.12.jar:5.3.12] 在 org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:207) ~[spring-context-5.3.12.jar:5.3.12] 在 org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:175) ~[spring-context-5.3.12.jar:5.3.12] ...省略了13个常用框架 原因:java.lang.IllegalStateException:无法从 ClassLoader [jdk.internal.loader.ClassLoaders$AppClassLoader@22d8cfe0] 内省类 [com.paulcarron.learningspringboot.learningspringboot.LearningSpringBootApplication] 原因:java.lang.IllegalStateException:无法从 ClassLoader [jdk.internal.loader.ClassLoaders$AppClassLoader@22d8cfe0] 内省类 [com.paulcarron.learningspringboot.learningspringboot.LearningSpringBootApplication]
在 org.springframework.util.ReflectionUtils.getDeclaredMethods(ReflectionUtils.java:481) ~[spring-core-5.3.12.jar:5.3.12] 在 org.springframework.util.ReflectionUtils.getDeclaredMethods(ReflectionUtils.java:455) ~[spring-core-5.3.12.jar:5.3.12] 在 org.springframework.core.type.StandardAnnotationMetadata.getAnnotatedMethods(StandardAnnotationMetadata.java:151) ~[spring-core-5.3.12.jar:5.3.12] ...省略了18个常用框架 引起:java.lang.NoClassDefFoundError: javax/servlet/Filter 在 java.base/java.lang.ClassLoader.defineClass1(Native Method) ~[na:na] 引起:java.lang.NoClassDefFoundError: javax/servlet/Filter
在 java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1010) ~[na:na] 在 java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:150) ~[na:na] 在 java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:855) ~[na:na] 在 java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:753) ~[na:na] 在 java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:676) ~[na:na] 在 java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:634) ~[na:na] 在 java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:182) ~[na:na] 在 java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:519) ~[na:na] 在 java.base/java.lang.ClassLoader.defineClass1(Native Method) ~[na:na] 在 java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1010) ~[na:na] 在 java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:150) ~[na:na] 在 java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:855) ~[na:na] 在 java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:753) ~[na:na] 在 java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:676) ~[na:na] 在 java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:634) ~[na:na] 在 java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:182) ~[na:na] 在 java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:519) ~[na:na] 在 java.base/java.lang.ClassLoader.defineClass1(Native Method) ~[na:na] 在 java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1010) ~[na:na] 在 java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:150) ~[na:na] 在 java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:855) ~[na:na] 在 java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:753) ~[na:na] 在 java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:676) ~[na:na] 在 java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:634) ~[na:na] 在 java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:182) ~[na:na] 在 java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:519) ~[na:na] 在 java.base/java.lang.Class.getDeclaredMethods0(Native Method) ~[na:na] 在 java.base/java.lang.Class.privateGetDeclaredMethods(Class.java:3334) ~[na:na] 在 java.base/java.lang.Class.getDeclaredMethods(Class.java:2446) ~[na:na] 在 org.springframework.util.ReflectionUtils.getDeclaredMethods(ReflectionUtils.java:463) ~[spring-core-5.3.12.jar:5.3.12] ...省略了20个常用框架 引起:java.lang.ClassNotFoundException:javax.servlet.Filter 引起:java.lang.ClassNotFoundException: javax.servlet.Filter
在 java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:636) ~[na:na] 在 java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:182) ~[na:na] 在 java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:519) ~[na:na] ...省略了51个常用框架
任务“:LearningSpringBootApplication.main()”执行失败。 进程 'command '/usr/local/Cellar/openjdk/16.0.1/libexec/openjdk.jdk/Contents/Home/bin/java'' 以非零退出值 1 结束
- 尝试: 使用 --stacktrace 选项运行以获取堆栈跟踪。使用 --info 或 --debug 选项运行以获得更多日志输出。运行 --scan 以获得完整的见解。
这是什么意思,我该如何解决?
【问题讨论】:
-
必须是
public或protected。请添加完整的堆栈跟踪,而不仅仅是一个 sn-p。但是,您甚至不需要此过滤器,因为它已由 Spring Boot 注册(或者实际上是 Spring Boot 中的OrderedHiddenHttpMethodFilter。尽管在较新的版本中,这可能会被禁用,而是将spring.mvc.hiddenmethod.filter.enabled=true添加到您的application.properties以拥有它开启。 -
抱歉,添加了完整的堆栈跟踪。那么
OrderedHiddenHttpMethodFilter会自动注册吗? -
是的,但如果你有更新的版本,它可能需要一个属性(见评论)(它被禁用,因为大多数人使用 Spring Boot 用于基于 REST 的微服务,这个过滤器只需要 HTML 表单正在提交(因为您的浏览器仅支持 GET/POST)。
标签: java spring-boot illegalstateexception