2013-08-26 1 views
0

Я написал новую проверку чека в качестве файла. Я смоделировал свои юниты после кода, который я нашел в коде checkstyle. Юниты работают отлично, и все выглядит хорошо.NoClassDefFoundError при запуске checkstyle

Но тогда я добавляю чек в свой проект.

<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 называет несколько классов в том же банке. По какой-то причине, когда ant запускает его, ant находит класс проверки, но не может найти вспомогательные классы, когда все они находятся в одном файле jar. вот что я получаю от муравья

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

Im stumped. Ive проверил все зависимости моего jar, все они находятся в пути к классам, я не понимаю, как он может найти один файл класса, но не другой в той же банке. Я сделал все мои грязные маленькие трюки, и я просто не понимаю.

любые идеи?

+0

** Я не понимаю, как он может найти один файл класса, но не другой в том же банке **: можете ли вы рассказать, какой класс вы нашли, а какие нет, под каким файлом jar. –

+0

класс проверки com.onuspride.codetools.checkstyles.DuplicateClassNames и класс, который он не может найти, и содержатся в одной и той же банке. com.onuspride.codetools.common.classpath.criteria.ClassNameCriteriaCollector – scphantm

ответ

0

Вы можете сделать это следующим образом:

  1. Создать проект плагина и добавить свои собственные проверки там.
  2. Внесите соответствующие изменения в plugin.xml, checkstyle_packages.xml.
  3. Экспортируйте проект как развертываемых плагин и фрагменты (Экспорт> Plugin Developement)
  4. Скопируйте файл банка в Eclipse Plugin folde, поэтому нет необходимости устанавливать свой собственный чек ,

Вы можете пройти через this tutorial for reference

Чтобы уменьшить усилие, скачать Sample Проверить, файл here под названием net.sf.eclipsecs.sample

Просто замените источник в папке Src. Перед заменой см эти 3 файла в SRC/нетто/SF/eclipsecs/образец/чеками/ каталог, вы будете нуждаться в них в каталоге ком/onuspride/codetools/checkstyles/:

  1. checkstyle- metadata.properties
  2. Checkstyle-metadata.xml
  3. messages.properties

После замены кода, внести соответствующие изменения в checkstyle_packages.xml файл в src/ каталог.

Extending Check описание хорошо там.

+0

Я буду играть с этим, но проблема с этим предложением заключается в том, что вы предполагаете, что я использую Eclipse. Большая часть моего кода написана с помощью Wordpad или Sublime. – scphantm

+0

Yup, попробовал это и все еще не работал. Опять же, у него нет никаких проблем с поиском моего чека, у него проблемы с поиском дополнительных классов, которые требует мой чек. Эти дополнительные проверки находятся в одном файле jar. – scphantm