SpringBoot运行时提示NoSuchMethodError: org.apache.tomcat.util.modeler.Registry.disableRegistry()V
报错解释:
NoSuchMethodError
表示在运行时尝试调用一个不存在的方法。这通常发生在编译时所依赖的库与运行时所使用的库之间版本不匹配时。在这个案例中,Spring Boot 应用程序在运行时尝试调用 org.apache.tomcat.util.modeler.Registry
类中的一个方法,但是这个方法在应用程序运行时使用的 Tomcat 类库版本中不存在。
解决方法:
- 检查项目依赖中的 Tomcat 版本是否与编译时一致。如果你是通过 Maven 或 Gradle 管理依赖,确保
pom.xml
或build.gradle
文件中指定的 Tomcat 版本与编译时使用的版本相匹配。 - 如果你是间接依赖 Tomcat(例如通过 Spring Boot Starter 依赖),确保你没有在依赖管理中指定一个不同版本的 Tomcat。
- 清除并更新项目的依赖缓存。对于 Maven,可以使用
mvn dependency:purge-local-repository
命令清理本地缓存依赖,然后重新构建项目。 - 如果你是意外地引入了多个 Tomcat 版本,使用 Maven 或 Gradle 的依赖排除机制排除不需要的版本。
- 确保没有其他的类加载器在干扰,可能是由于自定义类加载器或在系统的类路径中放置了不正确版本的库。
- 如果你是在 IDE 中开发,确保 IDE 使用的依赖库与运行时环境中使用的库版本一致。
- 如果以上步骤无法解决问题,考虑检查是否有任何第三方库引入了不同版本的 Tomcat,并排除或更新这些库。
评论已关闭