2

这是完整的错误:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-checkstyle-plugin:3.0.0:check (default) on project abc-123-micro-service: Failed during checkstyle configuration: cannot initialize module StrictDuplicateCode - Unable to instantiate 'StrictDuplicateCode' class, it is also not possible to instantiate it as .StrictDuplicateCode, StrictDuplicateCodeCheck, .StrictDuplicateCodeCheck. Please recheck that class name is specified as canonical name or read how to configure short name usage http://checkstyle.sourceforge.net/config.html#Packages. Please also recheck that provided ClassLoader to Checker is configured correctly. -> [Help 1]

我对 checkstyle 插件的 Maven 配置:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-checkstyle-plugin</artifactId>
    <version>3.0.0</version>
    <dependencies>
        <dependency>
            <groupId>com.puppycrawl.tools</groupId>
            <artifactId>checkstyle</artifactId>
            <version>8.8</version>
        </dependency>
    </dependencies>
    <executions>
        <execution>
            <id>validate</id>
            <phase>validate</phase>
            <configuration>
                <configLocation>checkstyle.xml</configLocation>
                <encoding>UTF-8</encoding>
                <consoleOutput>true</consoleOutput>
                <failsOnError>true</failsOnError>
            </configuration>
            <goals>
                <goal>check</goal>
            </goals>
        </execution>
    </executions>
</plugin>

我的 checkstyle.xml 配置文件不包含错误中提到的任何“重复”规则。如何解决此问题并让所有检查通过?

编辑:checkstyle.xml 的内容:https ://pastebin.com/kuJAFiiP

4

4 回答 4

2

错误消息cannot initialize module StrictDuplicateCode表明 Checkstyle 未能初始化它在遍历配置文件时发现的检查。此外,在 Checkstyle 6.2中删除了StrictDuplicateCode检查。

现在由于您的配置文件没有引用此检查,因此必须是 Maven Checkstyle 插件读取了其他一些配置文件。它的文档configuration应该直接在plugin. 尝试向上移动configurationXML 元素。

于 2018-04-02T12:04:05.520 回答
1

这意味着不支持 StrictDuplicateCodeCheck。

您可以编辑配置文件 checkstyle.xml 以删除此检查。

更新:

示例简单配置

<?xml version="1.0"?>
<!DOCTYPE module PUBLIC
    "-//Puppy Crawl//DTD Check Configuration 1.3//EN"
    "http://www.puppycrawl.com/dtds/configuration_1_3.dtd">

<module name="Checker">
    <module name="TreeWalker">
        <module name="AvoidStarImport"/>
        <module name="ConstantName"/>
        <module name="EmptyBlock"/>
    </module>
</module>

更新 2:

验证 checkstyle.xml 的位置。它可能应该在项目根目录中。

更新 3:

很高兴您已经找到了解决方案。这是pom文件,供参考。

<modelVersion>4.0.0</modelVersion>
    <groupId>clucinvt</groupId>
    <artifactId>s02checkstyle</artifactId>
    <version>1.0.0-SNAPSHOT</version>
    <packaging>jar</packaging>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
    </properties>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-checkstyle-plugin</artifactId>
                <version>3.0.0</version>
                <executions>
                    <execution>
                        <id>validate</id>
                        <phase>validate</phase>
                        <configuration>
                            <configLocation>checkstyle.xml</configLocation>
                            <encoding>UTF-8</encoding>
                            <consoleOutput>true</consoleOutput>
                            <failsOnError>true</failsOnError>
                            <linkXRef>false</linkXRef>
                        </configuration>
                        <goals>
                            <goal>check</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
于 2018-04-02T07:05:43.687 回答
0

如果有人仍然面临这个问题 - 尝试检查您的 JAVA_HOME 路径。就我而言,使用的是 JRE 而不是 JDK。当我修复它时 - maven-checkstyle-plugin:3.0.0:check 的问题已经消失

于 2019-12-03T12:46:06.823 回答
0

我刚刚将版本从 3.0.0 更新到 3.1.0,它对我有用。

maven-checkstyle-插件 3.1.0

非常感谢

于 2019-07-16T11:10:22.197 回答