执行allure serve生成报告时抛出javax/xml/bind/PropertyException异常
问题原因
java.lang.NoClassDefFoundError: javax/xml/bind/PropertyException 本质是JAXB相关类缺失。javax.xml.bind属于Java EE组件,JDK 8默认内置该部分API,JDK 9及以上版本默认移除了这部分组件。你当前使用的Allure 2.14.0内置的Allure1兼容插件在解析旧版Allure结果文件时会依赖JAXB类,一旦运行allure命令的JRE环境没有这部分类就会抛错。
另外你执行命令时传入的路径是错误的:allure serve命令需要直接传入allure-results结果目录路径,你传入target根目录、surefire-reports目录时,Allure会递归扫描路径下所有文件,识别到旧版格式的报告文件就会自动加载Allure1兼容插件,触发上述报错。
修复方案
- 修正命令传入的路径
你已经在target目录下正常生成了allure-results文件夹,直接指定该目录即可,不要传其他无关目录:allure serve projectpath\target\allure-results - 解决JAXB类缺失问题,二选一即可:
- 将本地运行
allure命令的JDK版本切换为JDK 8,和你项目配置的Java 8编译目标保持一致,JDK 8默认自带JAXB相关类,不会触发类缺失错误。 - 如果必须使用JDK 9及以上版本运行Allure命令,将本地安装的Allure命令行工具升级到2.17.0及以上版本,高版本Allure已经内置了JAXB相关依赖,不需要依赖JDK自带的相关类。
- 将本地运行
- 额外排查:执行命令前先清空target目录下的旧报告缓存,避免surefire-reports中残留的旧版Allure1格式xml文件被Allure扫描到,触发不必要的兼容插件加载。
内容的提问来源于stack exchange,提问作者Aztg
相关产品推荐
相关产品推荐

