-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Using JaCoCo agent to scan Spring Boot application returns an error #1186
Description
- JaCoCo version: 0.8.7
- Tool integration: Maven
- Complete executable reproducer: https://github.com/spring-projects/spring-petclinic
- Steps: Run the agent along side spring petclinic application. Add .jar file to the list and use agent analyzer API to analyze files.
Actual behaviour
java.io.IOException: Error while analyzing /runtime/spring-petclinic-2.4.5.jar@BOOT-INF/lib/log4j-api-2.13.3.jar@org/apache/logging/log4j/util/ProcessIdUtil.class.
at org.jacoco.core.analysis.Analyzer.analyzerError(Analyzer.java:162)
at org.jacoco.core.analysis.Analyzer.analyzeClass(Analyzer.java:134)
at org.jacoco.core.analysis.Analyzer.analyzeClass(Analyzer.java:157)
at org.jacoco.core.analysis.Analyzer.analyzeAll(Analyzer.java:193)
at org.jacoco.core.analysis.Analyzer.analyzeZip(Analyzer.java:265)
at org.jacoco.core.analysis.Analyzer.analyzeAll(Analyzer.java:196)
at org.jacoco.core.analysis.Analyzer.analyzeZip(Analyzer.java:265)
at org.jacoco.core.analysis.Analyzer.analyzeAll(Analyzer.java:196)
at org.jacoco.core.analysis.Analyzer.analyzeAll(Analyzer.java:226)
at org.jacoco.core.analysis.Analyzer.analyzeAll(Analyzer.java:221)
at com.test.coverage.ReportGenerator.analyzeJarDirectory(ReportGenerator.java:117)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.restexpress.route.Route.invoke(Route.java:281)
at org.restexpress.route.Action.invoke(Action.java:65)
at org.restexpress.pipeline.DefaultRequestHandler.processRequest(DefaultRequestHandler.java:156)
at org.restexpress.pipeline.DefaultRequestHandler.channelRead0(DefaultRequestHandler.java:131)
at org.restexpress.pipeline.DefaultRequestHandler.channelRead0(DefaultRequestHandler.java:51)
at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:307)
at io.netty.channel.AbstractChannelHandlerContext.access$600(AbstractChannelHandlerContext.java:32)
at io.netty.channel.AbstractChannelHandlerContext$7.run(AbstractChannelHandlerContext.java:298)
at io.netty.util.concurrent.DefaultEventExecutor.run(DefaultEventExecutor.java:36)
at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:112)
at io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:137)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.IllegalStateException: Can't add different class with same name: org/apache/logging/log4j/util/ProcessIdUtil
at org.jacoco.core.analysis.CoverageBuilder.visitCoverage(CoverageBuilder.java:106)
at org.jacoco.core.analysis.Analyzer$1.visitEnd(Analyzer.java:99)
at org.objectweb.asm.ClassVisitor.visitEnd(ClassVisitor.java:326)
at org.jacoco.core.internal.flow.ClassProbesAdapter.visitEnd(ClassProbesAdapter.java:100)
at org.objectweb.asm.ClassReader.accept(ClassReader.java:692)
at org.objectweb.asm.ClassReader.accept(ClassReader.java:400)
at org.jacoco.core.analysis.Analyzer.analyzeClass(Analyzer.java:116)
at org.jacoco.core.analysis.Analyzer.analyzeClass(Analyzer.java:132)
... 29 more