背景
Play 2.1でテストコードを書きながら、コードカバレッジを把握したいなーと思って調べていたところ、jacoco4sbtなるものを発見しまして。
https://bitbucket.org/jmhofer/jacoco4sbt
問題
で最新が2.0.0ということで色々設定をした後、playコマンドでsbt起動後にjacoco:coverとしてみると下記のエラーが。
java.lang.IncompatibleClassChangeError: class org.jacoco.core.internal.flow.ClassProbesVisitor has interface org.objectweb.asm.ClassVisitor as super class
で、どうも同じ症状が出ている人は世の中にいるらしく。
https://bitbucket.org/jmhofer/jacoco4sbt/issue/18/the-conflict-about-asm-library-in-play
上のリンクの方の推測によると、
Playで使っているASMのバージョンと、Jacocoで使っているASMのバージョンが違うんじゃない?とのこと。
回避策
jacoco4sbtの1.2.4を使えばいいよ!とのことでした。pkugin.sbtはこんな感じ。
//Jacoco libraryDependencies ++= Seq( "org.jacoco" % "org.jacoco.core" % "0.5.9.201207300726" artifacts(Artifact("org.jacoco.core", "jar", "jar")), "org.jacoco" % "org.jacoco.report" % "0.5.9.201207300726" artifacts(Artifact("org.jacoco.report", "jar", "jar"))) addSbtPlugin("de.johoop" % "jacoco4sbt" % "1.2.4")
その他
ASMって初めて知ったのですが、Javaのbytecodeを操作したり分析したりするフレームワークだそうな。http://asm.ow2.org/
0 件のコメント:
コメントを投稿