我写了一个新的 checkstyle 检查作为文件扫描器。我按照我在 checkstyle 代码中找到的代码对我的 junits 进行了建模。junits 运行良好,一切看起来都很好。
但是,我将支票添加到我的项目中。
<module name="TreeWalker">
<property name="tabWidth" value="4" />
<module name="com.onuspride.codetools.checkstyles.DuplicateClassNames"/>
</module>
和我的蚂蚁任务
<taskdef resource="checkstyletask.properties">
<classpath refid="classpath" />
</taskdef>
<property name="checkstyle.suppressions.file" value="checkstyle/suppressions.xml" />
<property name="translation.severity" value="error" />
<target name="checkStyle" description="TestTask to evaluate the checkstyle system.">
<checkstyle config="checkstyle/checkstyle_checks.xml">
<fileset dir="${msg.src}" includes="**/*.java" />
<formatter type="plain" />
<formatter type="xml" toFile="${msg.build.jar}/checkstyle_errors.xml" />
<classpath refid="classpath" />
</checkstyle>
</target>
duplicateclassnames 类在同一个 jar 中调用多个类。由于某种原因,当ant运行它时,当它们都在同一个jar文件中时,ant找到了检查类,但找不到支持类。这是我在蚂蚁中得到的
[checkstyle] [class]:0: Got an exception - java.lang.NoClassDefFoundError: com/onuspride/codetools/common/classpath/criteria/ClassNameCriteriaCollector
我难住了。我检查了我的 jar 的所有依赖项,它们都在类路径中,我不明白它如何在同一个 jar 中找到一个类文件而不是另一个类文件。我已经做了所有肮脏的小把戏,我就是不明白。
有任何想法吗?