这是我的全部错误。我使用最新的 IntelliJ IDEA Community,JDK 20。当我运行时,它显示以下消息(我删除了显示不必要的代码):
com.rdsic.quan_ly_goodchild.QuanLyGoodchildApplication.main(QuanLyGoodchildApplication.java:60) ~[classes/:na]
Caused by: java.lang.IllegalStateException: Failed to introspect Class [org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport] from ClassLoader [jdk.internal.loader.ClassLoaders$AppClassLoader@76ed5528]
at org.springframework.util.ReflectionUtils.getUniqueDeclaredMethods(ReflectionUtils.java:414) ~[spring-core-5.3.10.jar:5.3.10]
... 16 common frames omitted
Caused by: java.lang.NoClassDefFoundError: javax/servlet/ServletContext
at org.springframework.util.ReflectionUtils.getDeclaredMethods(ReflectionUtils.java:463) ~[spring-core-5.3.10.jar:5.3.10]
... 33 common frames omitted
Caused by: java.lang.ClassNotFoundException: javax.servlet.ServletContext
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641) ~[na:na]
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188) ~[na:na]
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521) ~[na:na]
... 37 common frames omitted
2024-01-05 17:34:18.463 WARN 14720 --- [ main] o.s.boot.SpringApplication : Unable to close ApplicationContext
java.lang.IllegalStateException: Failed to introspect Class [org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport] from ClassLoader [jdk.internal.loader.ClassLoaders$AppClassLoader@76ed5528]
Process finished with exit code 1
此外,我的 pom.xml 文件存在一些错误:
Plugin 'org.springframework.experimental:spring-aot-maven-plugin:0.10.3' not found
Dependency org.graalvm.buildtools:junit-platform-native:${native-buildtools.version} not found
Plugin org.graalvm.buildtools:native-maven-plugin:${native-buildtools.version} not found
编辑:我将 JDK 降级到 JDK 1.8,现在可以了。感谢您的帮助。
根据这篇文章,您当前的(
2.5.5
)Spring Boot版本不支持JDK 20:
发布 | Java |
---|---|
3.0 - 3.2 | 17 - 21 |
2.7 | 8 - 21 |
2.6 | 8 - 19 |
2.5 | 8 - 18 |
因此您需要将 JDK 降级到 JDK18 或更低版本或将 Spring Boot 升级到 2.7 或更高版本。
如果你问我,我会将 Spring Boot 升级到 3.2.x 或 3.1.x,并使用 LTE JDK 版本,JDK 17 或 JDK 21。