You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

执行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目录下,请问我的配置是否存在问题?


问题分析与解决方案

配置中的核心问题

  1. 版本冲突:你在dependencies中引入了checkstyle:checkstyle:5.0,但在checkstyle配置块里指定了toolVersion = 8.25。Gradle的Checkstyle插件会优先使用配置的工具版本,但项目依赖里的旧版本会引发类加载冲突,导致文件处理失败。
  2. 冗余依赖:Gradle的Checkstyle插件已经内置了Checkstyle工具,不需要在dependencies中单独声明checkstyle依赖,这完全是多余的操作,反而会引发版本不一致问题。

修复步骤

  1. 移除冗余的Checkstyle依赖
    删除dependencies中的这一行:
    implementation 'checkstyle:checkstyle:5.0'
    
  2. 升级Checkstyle版本适配Java 17
    Checkstyle 8.25对Java 17的支持不完善,建议升级到适配Java 17的版本,比如8.45.1:
    checkstyle {
        toolVersion = '8.45.1'
        checkstyleTest.enabled = false
        ignoreFailures = false
    }
    
  3. 清理缓存并重新构建
    执行以下命令清理Gradle缓存,避免旧版本残留影响:
    ./gradlew clean checkstyleMain
    
  4. **检查Checkstyle
相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 00:19:09