2013-08-26 58 views
0

我已经写了一个新的checkstyle检查作为一个文件扫描器。在我在checkstyle代码中找到的代码之后,我模拟了我的junit。联队运行得很好,一切都很好。当checkstyle运行时NoClassDefFoundError

但是,然后,我将检查添加到我的项目。

<module name="TreeWalker"> 
    <property name="tabWidth" value="4" /> 

    <module name="com.onuspride.codetools.checkstyles.DuplicateClassNames"/> 
</module> 

和我的Ant任务

<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类调用几个类在同一个瓶子里。出于某种原因,当ant运行它时,ant找到了检查类,但是当它们都在同一个jar文件中时,找不到支持类。这里是我得到的蚂蚁

[checkstyle] [class]:0: Got an exception - java.lang.NoClassDefFoundError: com/onuspride/codetools/common/classpath/criteria/ClassNameCriteriaCollector 

Im难倒了。我检查了我的jar的所有依赖项,它们都在类路径中,我不明白它是如何在同一个jar中找到一个类文件但不是另一个类文件。我已经完成了所有我肮脏的小技巧,我只是不明白。

有什么想法?

+0

**我不明白它是如何找到一个类文件,但没有在同一个jar中的另一个** ::你可以告诉你在哪个jar文件下找到了哪个类,哪个类没有。 –

+0

检查类是com.onuspride.codetools.checkstyles.DuplicateClassNames和它找不到的类,它们包含在同一个jar中。 com.onuspride.codetools.common.classpath.criteria.ClassNameCriteriaCollector – scphantm

回答

0

你可以像以下:

  1. 创建插件项目并添加自定义检查那里。
  2. plugin.xml进行适当更改,checkstyle_packages.xml。
  3. 出口项目为部署插件和片段出口>插件发展论坛
  4. 复制的jar文件Eclipse插件 folde,所以无需安装自定义检查

你可以通过this tutorial for reference

省力,下载样品查看,该文件是herenet.sf.eclipsecs.sample

下,只需更换在src文件源。更换之前,请参阅在的src/NET /平方英尺/ eclipsecs /样品/检查/目录中,你将需要他们在你COM/onuspride /编码工具编码工具/ checkstyles/目录这3个文件:

  1. checkstyle- metadata.properties
  2. 的CheckStyle-metadata.xml中
  3. messages.properties

更换代码后,做出相应的改变checkstyle_packages.xml文件在src/目录下。

Extending Check在那里很好地描述。

+0

我会玩这个,但这个建议的问题是你假设我使用Eclipse。我的代码中绝大多数是用写字板或崇高书写的。 – scphantm

+0

是的,试了一下,仍然没有工作。再次,它没有任何问题找到我的支票,它无法找到我的支票所需的额外课程。这些额外的检查位于同一个jar文件中。 – scphantm

相关问题