执行CheckstyleMain任务失败,无法处理文件致HTML报告生成失败
关于Spring Boot项目中Checkstyle主检查任务失败的问题
我在Spring Boot项目中执行Checkstyle主检查时遇到异常,任务:checkstyleMain执行失败,提示无法处理一批Java文件,导致HTML报告无法生成。不过在失败前系统已识别出约70个错误。
具体错误信息
Execution failed for task ':checkstyleMain'. > A failure occurred while executing org.gradle.api.plugins.quality.internal.CheckstyleAction > An unexpected error occurred configuring and executing Checkstyle. > Unable to process files: [F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\config\HttpsSetup.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\config\MyUserDetails.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\config\WebSecurity.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\controller\CommunityController.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\controller\ExceptionHandlerController.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\controller\FamilyTreeController.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\controller\forms\CommunityForm.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\controller\forms\FamilyTreeForm.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\controller\forms\RecipeForm.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\controller\forms\RegistrationForm.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\controller\HomeController.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\controller\LoginController.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\controller\RecipeController.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\controller\RegistrationController.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\controller\UnitConversionsController.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\domain\community\Community.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\domain\familyTree\Event.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\domain\familyTree\Family.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\domain\familyTree\Individual.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\domain\familyTree\Tree.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\domain\recipe\Image.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\domain\recipe\Ingredient.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\domain\recipe\Instruction.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\domain\recipe\Recipe.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\domain\recipe\Tag.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\domain\recipe\TagInitializationRunner.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\domain\unitConversions\ConvertedUnit.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\domain\users\PasswordRules.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\domain\users\Role.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\domain\users\User.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\domain\users\UserRole.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\repository\CommunityRepository.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\repository\FamilyTreeRepository.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\repository\IndividualRepository.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\repository\RecipeRepository.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\repository\TagRepository.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\repository\UserRepository.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\RnRApplication.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\service\community\CommunityCreationEvent.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\service\community\CommunityService.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\service\community\CommunityServiceImpl.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\service\emailService\EmailService.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\service\emailService\EmailServiceImpl.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\service\familyTree\FamilyTreeService.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\service\familyTree\FamilyTreeServiceImpl.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\service\familyTree\StandardiseDate.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\service\familyTree\TreeCreationEvent.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\service\genericService\GenericService.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\service\genericService\GenericServiceImpl.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\service\image\ImageService.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\service\image\ImageServiceImpl.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\service\recipe\RecipeCreationEvent.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\service\recipe\RecipeService.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\service\recipe\RecipeServiceImpl.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\service\unitConversions\fromUnitConversions\volume\FromCup.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\service\unitConversions\fromUnitConversions\volume\FromFluidOunce.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\service\unitConversions\fromUnitConversions\volume\FromGallon.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\service\unitConversions\fromUnitConversions\volume\FromLiter.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\service\unitConversions\fromUnitConversions\volume\FromMilliliter.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\service\unitConversions\fromUnitConversions\volume\FromPint.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\service\unitConversions\fromUnitConversions\volume\FromTbsp.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\service\unitConversions\fromUnitConversions\volume\FromTsp.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\service\unitConversions\fromUnitConversions\weight\FromGram.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\service\unitConversions\fromUnitConversions\weight\FromKilogram.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\service\unitConversions\fromUnitConversions\weight\FromMilligram.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\service\unitConversions\fromUnitConversions\weight\FromOunce.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\service\unitConversions\fromUnitConversions\weight\FromPound.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\service\unitConversions\fromUnitConversions\weight\FromStone.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\service\unitConversions\UnitConversionsService.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\service\unitConversions\UnitConversionsServiceImpl.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\service\user\MyUserDetailsService.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\service\user\UserCreationEvent.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\service\user\UserService.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\service\user\UserServiceImpl.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\utils\CONSTANTS.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\utils\DoubleCheck\DoubleCheck.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\utils\DoubleCheck\DoubleValidator.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\utils\FileExtensionCheck\FileExtensionCheck.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\utils\FileExtensionCheck\FileExtensionValidator.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\utils\IntegerCheck\IntegerCheck.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\utils\IntegerCheck\IntegerValidator.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\utils\PasswordMatcher\PasswordMatcher.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\utils\PasswordMatcher\PasswordMatcherValidator.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\utils\ValidateString\StringValidator.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\utils\ValidateString\ValidateString.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\utils\ValidPassword\LowercaseConstraintValidator.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\utils\ValidPassword\LowercaseValidator.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\utils\ValidPassword\NumbersConstraintValidator.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\utils\ValidPassword\NumbersValidator.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\utils\ValidPassword\SpecialCharConstraintValidator.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\utils\ValidPassword\SpecialCharValidator.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\utils\ValidPassword\UppercaseConstraintValidator.java, F:\Computer Science\Work\RnR\src\main\java\FamilyFusion\rnr\utils\ValidPassword\UppercaseValidator.java]
项目build.gradle配置
plugins { id 'java' id 'org.springframework.boot' version '3.1.0' id 'io.spring.dependency-management' version '1.1.0' id 'checkstyle' } group = 'FamilyFusion' version = '0.0.1-SNAPSHOT' sourceCompatibility = '17' configurations { compileOnly { extendsFrom annotationProcessor } } repositories { mavenCentral() } dependencies { // Spring Boot Starters implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:spring-boot-starter-mail' implementation 'org.springframework.boot:spring-boot-starter-security' implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' implementation 'org.springframework.boot:spring-boot-starter-web' // Validation implementation 'org.springframework.boot:spring-boot-starter-validation:3.0.6' // Thymeleaf Extras implementation 'org.thymeleaf.extras:thymeleaf-extras-springsecurity6' implementation 'nz.net.ultraq.thymeleaf:thymeleaf-layout-dialect:3.2.1' // File Upload implementation 'commons-fileupload:commons-fileupload:1.5' // Gedcom4j implementation 'org.gedcom4j:gedcom4j:4.0.1' // JSON implementation 'org.json:json:20230618' // Checkstyle implementation 'checkstyle:checkstyle:5.0' // Lombok compileOnly 'org.projectlombok:lombok' annotationProcessor 'org.projectlombok:lombok' // Development Tools developmentOnly 'org.springframework.boot:spring-boot-devtools' // Database Connector runtimeOnly 'com.mysql:mysql-connector-j' // Testing testImplementation 'org.springframework.boot:spring-boot-starter-test' testImplementation 'org.springframework.security:spring-security-test' } checkstyle { toolVersion = 8.25 checkstyleTest.enabled = false ignoreFailures = false } tasks.named('test') { useJUnitPlatform() }
该功能此前可正常运行,不知为何突然失效。Checkstyle的xml配置文件存放于与build.gradle同级的config/checkstyle目录下,请问我的配置是否存在问题?
问题分析与解决方案
配置中的核心问题
- 版本冲突:你在
dependencies中引入了checkstyle:checkstyle:5.0,但在checkstyle配置块里指定了toolVersion = 8.25。Gradle的Checkstyle插件会优先使用配置的工具版本,但项目依赖里的旧版本会引发类加载冲突,导致文件处理失败。 - 冗余依赖:Gradle的Checkstyle插件已经内置了Checkstyle工具,不需要在
dependencies中单独声明checkstyle依赖,这完全是多余的操作,反而会引发版本不一致问题。
修复步骤
- 移除冗余的Checkstyle依赖
删除dependencies中的这一行:implementation 'checkstyle:checkstyle:5.0' - 升级Checkstyle版本适配Java 17
Checkstyle 8.25对Java 17的支持不完善,建议升级到适配Java 17的版本,比如8.45.1:checkstyle { toolVersion = '8.45.1' checkstyleTest.enabled = false ignoreFailures = false } - 清理缓存并重新构建
执行以下命令清理Gradle缓存,避免旧版本残留影响:./gradlew clean checkstyleMain - **检查Checkstyle
相关产品推荐
相关产品推荐

