运行时抛此异常

image.png
看到的是这样

image.png
查看字节码是这样

image.png
查看覆盖率报告,main方法是肯定执行过的,但没有覆盖率,而子类Foo里是有覆盖率的。

image.png
使用IDEA看到的是这个样子
package com.example.demo;
import com.sankuai.jacoco.DataDump;
public class Main {
static int a = 0;
Main() {
System.out.println("Main construct.");
}
void test() {
System.out.println("test for main");
}
public static void main(String[] var0) {
DataDump.start("com.example.windows1", "window_app_jar_test3", "debug");
System.out.println("main start.");
Main main = new Main();
main.test();
Main.Foo f = new Main.Foo();
f.execute();
Executor foo = new Executor();
foo.exec();
}
public static class Foo {
public Foo() {
boolean[] var1 = $jacocoInit();
super();
var1[0] = true;
}
public void execute() {
boolean[] var1 = $jacocoInit();
System.out.println("Hello,World");
var1[1] = true;
}
}
}
使用Jadx工具看到的是这个样子
package com.example.demo;
import com.sankuai.jacoco.DataDump;
import org.jacoco.agent.rt.internal_b0d6a23.Offline;
public class Main {
static int a = 0;
public static class Foo {
private static final transient /* synthetic */ boolean[] $jacocoData = null;
private static /* synthetic */ boolean[] $jacocoInit() {
boolean[] zArr = $jacocoData;
if (zArr != null) {
return zArr;
}
zArr = Offline.getProbes(-4908124945768433721L, "com/example/demo/Main$Foo", 2);
$jacocoData = zArr;
return zArr;
}
public Foo() {
$jacocoInit()[0] = true;
}
public void execute() {
boolean[] $jacocoInit = $jacocoInit();
System.out.println("Hello,World");
$jacocoInit[1] = true;
}
}
Main() {
System.out.println("Main construct.");
}
void test() {
System.out.println("test for main");
}
public static void main(String[] strArr) {
DataDump.start("com.example.windows1", "window_app_jar_test3", "debug");
System.out.println("main start.");
new Main().test();
new Foo().execute();
new Executor().exec();
}
}