【问题标题】:Why does Checkstyle tries to create a Check for my Listener为什么 Checkstyle 会尝试为我的 Listener 创建一个 Check
【发布时间】:2010-01-27 09:42:58
【问题描述】:

我已经实现了一个 Checkstyle 监听器。它以前工作过,(我认为是 5.0 beta 版本),但现在(使用 5.0),checkstyle 失败并出现以下 CallStack

  Unable to create Checker: cannot initialize module de.xyz.toxicity.TeamcityListener - Unable to instantiate de.xyz.toxicity.TeamcityListener
  com.puppycrawl.tools.checkstyle.api.CheckstyleException: cannot initialize module de.xyz.toxicity.TeamcityListener - Unable to instantiate de.xyz.toxicity.TeamcityListener
    at com.puppycrawl.tools.checkstyle.Checker.setupChild(Checker.java:177)
    at com.puppycrawl.tools.checkstyle.api.AutomaticBean.configure(AutomaticBean.java:207)
    at com.puppycrawl.tools.checkstyle.Main.createChecker(Main.java:138)
    at com.puppycrawl.tools.checkstyle.Main.main(Main.java:115)
  Caused by: com.puppycrawl.tools.checkstyle.api.CheckstyleException: Unable to instantiate de.xyz.toxicity.TeamcityListener
    at com.puppycrawl.tools.checkstyle.PackageObjectFactory.createModule(PackageObjectFactory.java:156)
    at com.puppycrawl.tools.checkstyle.Checker.setupChild(Checker.java:152)
    ... 3 more
  Caused by: com.puppycrawl.tools.checkstyle.api.CheckstyleException: Unable to instantiate de.xyz.toxicity.TeamcityListenerCheck
    at com.puppycrawl.tools.checkstyle.PackageObjectFactory.doMakeObject(PackageObjectFactory.java:99)
    at com.puppycrawl.tools.checkstyle.PackageObjectFactory.createModule(PackageObjectFactory.java:153)
    ... 4 more

我的配置文件是这样的

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

<module name="Checker">
<property name="severity" value="warning"/>
<module name="de.xyz.toxicity.TeamcityListener" />
    <module name="FileLength">
        <property name="max" value="500"/>
</module>

<module name="TreeWalker">
    <module name="FileContentsHolder"/>

    <module name="AnonInnerLength">
        <property name="max" value="35"/>
    </module>
    // ... more modules like this follow
</module>
</module>

从配置中删除我自己的侦听器后一切正常。

真正让我困惑的是:为什么 checkstyle 会寻找 TeamcityListenerCheck 类? 这样的类是不存在的。我需要吗?它应该是什么样子?

【问题讨论】:

    标签: listener checkstyle


    【解决方案1】:

    愚蠢的我......这是一个简单的类路径问题。

    【讨论】:

      【解决方案2】:

      您能否提供有关类路径问题的更多信息?我有同样的问题。当我使用 sun_checks.xml 在 ANT 中运行 Checkstyle 时……没问题。当我添加我的 custom_check.xml 时,我会收到与您看到的相同的错误消息。当您说 Classpath 时,您是指像 %CLASSPATH% 这样的环境类路径,还是指 ANT 文件中的类路径设置?

      我的 ANT 文件是这样设置的:

      <taskdef resource="checkstyletask.properties">
              <classpath>
                      <pathelement location="\bin"/> 
                      <pathelement location="\lib"/> 
                      <!--<pathelement location="C:ant\lib\myCSCode.jar"/> -->
                      <pathelement location="C:\checkstyle-5.5\checkstyle-5.5-all.jar"/>
              </classpath>
      </taskdef>
      

      【讨论】:

      • 我的 de.xyz.toxicity.TeamcityListener 不在类路径中。
      • 谢谢!那正是我的问题。 ANT 类路径不喜欢我的 jar 或类的相对路径。我输入了课程的完整路径,它可以工作。我可以忍受。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-02
      • 2021-11-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多