无法实例化“ InvalidJavadocPosition”类

时间:2019-07-19 10:07:23

标签: gradle checkstyle

我正在使用Gradle 5.5.1,并想添加checkstyle插件。

我添加了插件

plugins {
    id 'checkstyle'
}

sun_checks.xml那里夺走了sun_checks.xml。 但是,当我尝试执行gradlew clean check时,它会失败,并由以下原因引起

Caused by: com.puppycrawl.tools.checkstyle.api.CheckstyleException: Unable to instantiate 'InvalidJavadocPosition' class, it is also not possible to instantiate it as
.InvalidJavadocPosition, InvalidJavadocPositionCheck, .InvalidJavadocPositionCheck. Please recheck that class name is specified as canonical name or read how to config
ure short name usage https://checkstyle.org/config.html#Packages. Please also recheck that provided ClassLoader to Checker is configured correctly.
        at com.puppycrawl.tools.checkstyle.PackageObjectFactory.createModule(PackageObjectFactory.java:210)
        at com.puppycrawl.tools.checkstyle.TreeWalker.setupChild(TreeWalker.java:127)
        ... 110 more

据我了解,这是由gradle使用8.17的默认checkstyle版本不支持的规则引起的。

但是,当我想更改工具版本时(更新到更高位置)

checkstyle { toolVersion '8.21' }

它没有解决问题。有什么问题吗?

2 个答案:

答案 0 :(得分:1)

您为其提供链接的sun_checks.xml文件是GitHub中的最新代码版本。如果您点击该链接,将会看到22天前添加了InvalidJavadocPosition检查模块:

“ rnveach问题#6649:22天前添加InvalidJavadocPositionCheck 2b7b0c2”

22天前,InvalidJavadocPositionCheck类也已添加到GitHub中的checkstyle代码库中,目标版本为8.23:

https://github.com/checkstyle/checkstyle/blob/master/src/main/java/com/puppycrawl/tools/checkstyle/checks/javadoc/InvalidJavadocPositionCheck.java

* @since 8.23
*/
@StatelessCheck
public class InvalidJavadocPositionCheck extends AbstractCheck {

因此,您正在使用的sun_checks.xml文件与尚未发布的8.23兼容。

一种简单的解决方法是在8.23发布之前删除该模块:

<!-- <module name="InvalidJavadocPosition"/> -->

答案 1 :(得分:0)

您必须始终使用与toolVersion匹配的配置。因此,对于Checkstyle 8.21,要使用的文件是 https://github.com/checkstyle/checkstyle/blob/checkstyle-8.21/src/main/resources/sun_checks.xml

根据您的Checkstyle版本调整版本号。