升级Jetty后遭遇Class Not Found Exception错误求助
解决Jetty-util从6.1.26升级到9.4.53后出现的NoClassDefFoundError问题
检查依赖冲突与遗留旧jar
先确认项目里是不是还留着旧版本的jetty-util:- 打开IDEA的
File > Project Structure > Libraries,搜索jetty-util,确保只有9.4.53版本存在 - 用依赖分析命令排查间接依赖:
- Maven项目执行:
mvn dependency:tree | grep jetty-util,看是否有其他依赖偷偷引入了旧版本 - Gradle项目执行:
./gradlew dependencies | grep jetty-util
- Maven项目执行:
- 如果发现旧版本,在对应的依赖中添加排除规则(Maven示例):
<dependency> <!-- 填写你的依赖信息 --> <groupId>xxx</groupId> <artifactId>xxx</artifactId> <version>xxx</version> <exclusions> <exclusion> <groupId>org.mortbay.jetty</groupId> <artifactId>jetty-util</artifactId> </exclusion> </exclusions> </dependency>
- 打开IDEA的
清理重构项目
- 清除IDEA缓存:
File > Invalidate Caches...,勾选Clear file system cache and local history,点击Invalidate and Restart - 清理构建产物后重新打包:
- Maven:
mvn clean install -U - Gradle:
./gradlew clean build --refresh-dependencies
- Maven:
- 确认target/classes或build/classes目录下没有旧版本的class文件
- 清除IDEA缓存:
检查groupId是否更新
Jetty 6.x的groupId是org.mortbay.jetty,9.x已改为org.eclipse.jetty,确认项目依赖配置是否同步修改:
正确的9.x依赖配置(Maven):<dependency> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-util</artifactId> <version>9.4.53.v20231009</version> </dependency>排查API重构导致的类缺失
Jetty从6到9做了大量API重构,部分类可能被重命名、迁移或删除:- 找到报错的类名,在Jetty 9.x的源码或文档中确认该类是否存在
- 如果类迁移了,更新项目中的import语句;如果类已删除,寻找对应的替代API
内容的提问来源于stack exchange,提问作者liuqi wu
相关产品推荐
相关产品推荐

