使用Extent Report遇NoClassDefFoundError异常,求解决方法
解决Extent Report的
NoClassDefFoundError: freemarker/template/TemplateModelException异常 这个异常的核心原因是运行时JVM无法找到Freemarker的TemplateModelException类,通常和依赖缺失、版本不兼容或者依赖范围配置错误有关。结合你的POM配置,我给你几个可行的解决方案:
1. 验证Freemarker依赖是否正确加载
- 首先检查本地Maven仓库(默认路径
~/.m2/repository/org/freemarker/freemarker/2.3.23/)是否存在freemarker-2.3.23.jar文件。如果缺失,执行以下命令强制更新依赖:mvn clean install -U - 确认你的Freemarker依赖没有设置错误的
<scope>(比如provided或test),这些scope会导致依赖只在编译/测试阶段可用,运行时被排除。你的当前配置没有指定scope,默认是compile,这是正确的,但如果之前有修改过,要确保恢复默认。
2. 解决依赖版本冲突
有时候项目中其他依赖可能引入了不同版本的Freemarker,导致版本冲突,覆盖了你指定的2.3.23版本。你可以通过Maven依赖树排查:
mvn dependency:tree
如果发现有其他依赖引入了不兼容的Freemarker版本,你可以在Extent Reports的依赖中排除冲突的Freemarker,确保只使用你指定的版本:
<dependency> <groupId>com.relevantcodes</groupId> <artifactId>extentreports</artifactId> <version>2.41.2</version> <exclusions> <exclusion> <groupId>org.freemarker</groupId> <artifactId>freemarker</artifactId> </exclusion> </exclusions> </dependency>
3. 清理并重建项目
- 执行Maven清理命令,清除旧的编译文件和依赖缓存:
mvn clean - 重新编译项目:
mvn compile - 如果使用IDE(如IntelliJ IDEA或Eclipse),可以点击"刷新Maven依赖"按钮,或者重新导入项目,确保IDE正确识别所有依赖包。
额外建议
如果以上方法都无效,可以尝试更换Freemarker的版本。Extent Reports 2.41.2经过验证兼容的Freemarker版本是2.3.20,你可以修改POM中的Freemarker依赖版本为2.3.20再测试。
内容的提问来源于stack exchange,提问作者Poulomi21b
相关产品推荐
相关产品推荐

