我试图在我的Play 2.3.4(scala 2.10.4)应用中使用jacoco4sbt,但只有2.1.4似乎有用。当我使用.5或.6时,我收到以下错误:
[error] (main/jacoco:fullClasspath) java.lang.NoSuchMethodError:
org.objectweb.asm.MethodVisitor.visitMethodInsn(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Z)V
我尝试将asm-all
(版本4.1和5.0.3)添加到依赖项中,但这根本没有帮助。
那么可能是什么问题?我是否需要添加任何额外的依赖?
答案 0 :(得分:1)
They have indeed changed the ASM version到5.0.1,即便如此,我也无法重现您的问题。
<强>项目/ build.properties 强>
sbt.version=0.13.7-M3
<强>项目/ plugins.sbt 强>
addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.3.4")
<强>插件/ jacoco4sbt.sbt 强>
addSbtPlugin("de.johoop" % "jacoco4sbt" % "2.1.6")
<强> build.sbt 强>
name := """play-jacoco"""
version := "1.0-SNAPSHOT"
enablePlugins(PlayScala)
scalaVersion := "2.11.2"
libraryDependencies ++= Seq(
jdbc,
anorm,
cache,
ws
)
pipelineStages := Seq(rjs, digest, gzip)
jacoco.settings
当我跑jacoco:cover
时,它工作正常。
[play-uglify] $ jacoco:cover
[info] Compiling 2 Scala sources to /Users/jacek/sandbox/play-uglify/target/scala-2.11/test-classes...
SLF4J: The following set of substitute loggers may have been accessed
SLF4J: during the initialization phase. Logging calls during this
SLF4J: phase were not honored. However, subsequent logging calls to these
SLF4J: loggers will work as normally expected.
SLF4J: See also http://www.slf4j.org/codes.html#substituteLogger
SLF4J: org.apache.http.impl.client.DefaultHttpClient
SLF4J: com.gargoylesoftware.htmlunit.IncorrectnessListenerImpl
SLF4J: com.gargoylesoftware.htmlunit.javascript.StrictErrorReporter
SLF4J: com.gargoylesoftware.htmlunit.DefaultCssErrorHandler
SLF4J: com.gargoylesoftware.htmlunit.javascript.configuration.JavaScriptConfiguration
SLF4J: com.gargoylesoftware.htmlunit.WebClient
SLF4J: com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine
SLF4J: com.gargoylesoftware.htmlunit.WebResponse
[info] IntegrationSpec
[info]
[info] Application should
[info] + work from within a browser
[info]
[info] Total for specification IntegrationSpec
[info] Finished in 29 ms
[info] 1 example, 0 failure, 0 error
[info] ApplicationSpec
[info]
[info] Application should
[info] + send 404 on a bad request
[info] + render the index page
[info]
[info] Total for specification ApplicationSpec
[info] Finished in 29 ms
[info] 2 examples, 0 failure, 0 error
[info] Passed: Total 3, Failed 0, Errors 0, Passed 3
[info]
[info] ------- Jacoco Coverage Report --------
[info]
[info] Lines: 57.5% (>= required 0.0%) covered, 34 of 80 missed, OK
[info] Instructions: 72.12% (>= required 0.0%) covered, 522 of 1872 missed, OK
[info] Branches: 27.78% (>= required 0.0%) covered, 26 of 36 missed, OK
[info] Methods: 81.94% (>= required 0.0%) covered, 41 of 227 missed, OK
[info] Complexity: 76.73% (>= required 0.0%) covered, 57 of 245 missed, OK
[info] Class: 57.14% (>= required 0.0%) covered, 12 of 28 missed, OK
[info] Check /Users/jacek/sandbox/play-uglify/target/scala-2.11/jacoco for detail report
[info]
[success] Total time: 6 s, completed Oct 9, 2014 7:42:31 AM
我们在哪里有所不同?
答案 1 :(得分:1)
在查看Jacek的答案并开始从我的项目中删除内容之后,我发现这是因为某些custom task运行PMD我不知道,这可能取决于不同的asm版本
要解决此问题,我只是更改了project/plugins.sbt
中的依赖项以排除asm依赖项:
libraryDependencies ++= Seq(
// (...)
"net.sourceforge.pmd" % "pmd" % "5.1.3" exclude("org.ow2.asm", "asm")
)
Jacoco和PMD再次开始工作。