この日記は私的なものであり所属会社の見解とは無関係です。 GitHub: takahashikzn

PMDでIncompatibleClassChangeError→checkstyle-8.2-all.jarが原因

今日、PMDを実行したらいきなりこんなエラーになって動かなくなりました。

java.lang.IncompatibleClassChangeError: Implementing class
    ...

は?何?と思って調査した所、checkstyle-8.2-all.jarをcheckstyle-8.1-all.jarに戻したら動くようになりました。

どうやらPMDが使用しているsaxonが、checkstyle-8.2-all.jarに新たに含まれるようになり、しかもクラスファイルが微妙に異なる模様です。

checkstyle-8.2のディストリビューションの中身を見てみると、Saxon-HE-9.8.0.4.jarというファイルが含まれており、 PMDのsaxon-9.8.0.4.jarと異なるようです。詳しくは見てませんが…

2017-10-25追記

結局、checkstyle-all.jarを使うのを止めたら解消しました。

以下の依存jarを追加する必要があります。

  • checkstyle.jar
  • antlrall.jar
    • 注:antlr4ではなく古いほう
  • antlr4-runtime.jar
  • commons-beanutils.jar
  • commons-collections.jar