无法实例化 'InvalidJavadocPosition' class
Unable to instantiate 'InvalidJavadocPosition' class
我正在使用 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' }
没有解决问题。有什么问题?
您为其提供 link 的 sun_checks.xml 文件是代码的最新版本,在 GitHub 中。如果你按照那个 link 你会看到 InvalidJavadocPosition 检查模块是在 22 天前添加的:
"rnveach Issue #6649: add InvalidJavadocPositionCheck 2b7b0c2 22 days ago"
InvalidJavadocPositionCheck class 也被添加到 GitHub 22 天前的 checkstyle 代码库中,用于 8.23 版本:
* @since 8.23
*/
@StatelessCheck
public class InvalidJavadocPositionCheck extends AbstractCheck {
所以您使用的sun_checks.xml文件是与尚未发布的8.23兼容的。
简单的解决方法是在 8.23 发布之前删除该模块:
<!-- <module name="InvalidJavadocPosition"/> -->
您必须始终使用与您的工具版本匹配的配置。因此,对于 Checkstyle 8.21,要使用的文件是
https://github.com/checkstyle/checkstyle/blob/checkstyle-8.21/src/main/resources/sun_checks.xml
根据您的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 { toolVersion '8.21' }
没有解决问题。有什么问题?
您为其提供 link 的 sun_checks.xml 文件是代码的最新版本,在 GitHub 中。如果你按照那个 link 你会看到 InvalidJavadocPosition 检查模块是在 22 天前添加的:
"rnveach Issue #6649: add InvalidJavadocPositionCheck 2b7b0c2 22 days ago"
InvalidJavadocPositionCheck class 也被添加到 GitHub 22 天前的 checkstyle 代码库中,用于 8.23 版本:
* @since 8.23
*/
@StatelessCheck
public class InvalidJavadocPositionCheck extends AbstractCheck {
所以您使用的sun_checks.xml文件是与尚未发布的8.23兼容的。
简单的解决方法是在 8.23 发布之前删除该模块:
<!-- <module name="InvalidJavadocPosition"/> -->
您必须始终使用与您的工具版本匹配的配置。因此,对于 Checkstyle 8.21,要使用的文件是 https://github.com/checkstyle/checkstyle/blob/checkstyle-8.21/src/main/resources/sun_checks.xml
根据您的Checkstyle版本调整版本号。