Mik*_*ton 7 maven jacoco jacoco-maven-plugin
面对 drools 库中方法的 jacoco 的方法太大错误,如何解决这个问题?我还尝试将 ** DRL6Lexer.class添加到 jacoco 中的排除项中,但它不起作用。我还能如何解决这个问题。
错误:
java.lang.instrument.IllegalClassFormatException:检测 org/drools/compiler/lang/DRL6Lexer 时出错。在 org.jacoco.agent.rt.internal_f3994fa.CoverageTransformer.transform(CoverageTransformer.java:94) 在 java.instrument/java.lang.instrument.ClassFileTransformer.transform(ClassFileTransformer.java:246) 在 java.instrument/sun.instrument .TransformerManager.transform(TransformerManager.java:188) 在 java.instrument/sun.instrument.InstrumentationImpl.transform(InstrumentationImpl.java:563) 在 java.base/java.lang.ClassLoader.defineClass1(本机方法) 在 java.base /java.lang.ClassLoader.defineClass(ClassLoader.java:1016) 在 java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:174) 在 java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader .java:800) 在 java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:698) 在 java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:621) 在 java.基/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:579)在java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)在java.base/java.lang。 ClassLoader.loadClass(ClassLoader.java:521) 在 org.drools.compiler.compiler.DRLFactory.getDRLLexer(DRLFactory.java:112) 在 org.drools.compiler.compiler.DRLFactory.buildLexer(DRLFactory.java:59) 在 org .drools.compiler.compiler.DrlParser.parse(DrlParser.java:163) 在 org.drools.compiler.compiler.DrlParser.parse(DrlParser.java:154) 在 org.drools.compiler.compiler.DrlParser.parse(DrlParser) .java:144) 在 DroolsParser.parseDrl(DroolsParser.java:36) 在 DroolsParserTest.generateRules_success(DroolsParserTest.java:39) 在 java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(本机方法) 在 java.base/ jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 位于 java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 位于 java.base/java.lang.reflect.Method。在 org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59) 在 org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) 调用(Method.java:566) org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)在 org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)在 org.junit.internal.runners.statements。 RunBefores.evaluate(RunBefores.java:26) 在 org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306) 在 org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100) 在 org.junit .runners.ParentRunner.runLeaf(ParentRunner.java:366) 在 org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103) 在 org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63) 在 org. junit.runners.ParentRunner$4.run(ParentRunner.java:331) 在组织。junit.runners.ParentRunner$1.schedule(ParentRunner.java:79) 在 org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329) 在 org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)在 org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293) 在 org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306) 在 org.junit.runners.ParentRunner.run(ParentRunner.java :413)在org.junit.runner.JUnitCore.run(JUnitCore.java:137)在org.junit.runner.JUnitCore.run(JUnitCore.java:115)在org.junit.vintage.engine.execution.RunnerExecutor。在 java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183) 处执行(RunnerExecutor.java:40) 在 java.base/java.util.stream.ReferencePipeline$3$1.accept( ReferencePipeline.java:195) 在 java.base/java.util.Iterator.forEachRemaining(Iterator.java:133) 在 java.base/java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801) 在 java.base /java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484) 在 java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474) 在 java.base/java.util.stream.ForEachOps $ForEachOp.evaluateSequential(ForEachOps.java:150) 在 java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173) 在 java.base/java.util.stream.AbstractPipeline.evaluate (AbstractPipeline.java:234) 在 java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:497) 在 org.junit.vintage.engine.VintageTestEngine.executeAllChildren(VintageTestEngine.java:80) 在 org. junit.vintage.engine.VintageTestEngine.execute(VintageTestEngine.java:71) 在 org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:170) 在 org.junit.platform.launcher.core.DefaultLauncher。在 org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:90) 处执行(DefaultLauncher.java:154) 在 org.apache.maven.surefire.junitplatform.JUnitPlatformProvider.invokeAllTests(JUnitPlatformProvider.java:150)在 org.apache.maven.surefire.junitplatform.JUnitPlatformProvider.invoke(JUnitPlatformProvider.java:124) 在 org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:384) 在 org.apache.maven.surefire .booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:345) 在 org.apache.maven.surefire.booter.ForkedBooter.execute(ForkedBooter.java:126) 在 org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter) .java:418) 原因为:java.io.IOException:检测 org/drools/compiler/lang/DRL6Lexer 时出错。在 org.jacoco.agent.rt.internal_f3994fa.core.instr.Instrumenter.instrumentError(Instrumenter.java:160) 在 org.jacoco.agent.rt.internal_f3994fa.core.instr.Instrumenter.instrument(Instrumenter.java:110)在 org.jacoco.agent.rt.internal_f3994fa.CoverageTransformer.transform(CoverageTransformer.java:92) ... 64 更多 引起者:org.jacoco.agent.rt.internal_f3994fa.asm.MethodTooLargeException:方法太大:
pom.xml
<dependencies>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.drools</groupId>
<artifactId>drools-compiler</artifactId>
</dependency>
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.11.2</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.module</groupId>
<artifactId>jackson-module-parameter-names</artifactId>
<version>2.11.2</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
<version>5.4.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.platform</groupId>
<artifactId>junit-platform-launcher</artifactId>
<version>1.2.0</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.10</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>11</source>
<target>11</target>
<compilerArgs>
<compilerArg>-Amapstruct.defaultComponentModel=spring</compilerArg>
</compilerArgs>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.2</version>
<dependencies>
<dependency>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
<version>5.4.0</version>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>5.4.0</version>
</dependency>
</dependencies>
</plugin>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.8.6</version>
<executions>
<execution>
<id>default-prepare-agent</id>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
<execution>
<id>default-prepare-agent-integration</id>
<goals>
<goal>prepare-agent-integration</goal>
</goals>
</execution>
<execution>
<id>default-report</id>
<goals>
<goal>report</goal>
</goals>
<configuration>
<outputDirectory>
${project.parent.basedir}/target/site/jacoco/${project.artifactId}
</outputDirectory>
</configuration>
</execution>
<execution>
<id>default-report-integration</id>
<goals>
<goal>report-integration</goal>
</goals>
</execution>
<execution>
<id>default-check</id>
<goals>
<goal>check</goal>
</goals>
<configuration>
<rules>
<rule>
<element>BUNDLE</element>
<limits>
<limit>
<counter>LINE</counter>
<value>COVEREDRATIO</value>
<minimum>${jacoco.percentage.line}</minimum>
</limit>
<limit>
<counter>BRANCH</counter>
<value>COVEREDRATIO</value>
<minimum>${jacoco.percentage.branch}</minimum>
</limit>
<limit>
<counter>COMPLEXITY</counter>
<value>COVEREDRATIO</value>
<minimum>${jacoco.percentage.complexity}</minimum>
</limit>
</limits>
</rule>
</rules>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
Run Code Online (Sandbox Code Playgroud)
小智 3
使用 Jacoco 任务扩展(一个扩展 jacoco 注入到每个 Test 类型的任务中),您可以排除有问题的DRL6Lexer类。
对于我在 gradle 来说这很有效。
test {
jacoco{
excludes = ['org/drools/**/*']
}
useJUnitPlatform()
finalizedBy jacocoTestReport
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4732 次 |
| 最近记录: |