今日、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
- checkstyle-all.jarではない
- antlrall.jar
- 注:antlr4ではなく古いほう
- antlr4-runtime.jar
- commons-beanutils.jar
- commons-collections.jar