我正在使用 SonarQube 进行代码质量控制,突然之间,原本可以通过的构建就无法进行分析并失败了。
[ INFO ][00:00:03.630]分析/mySuperProject/target/jacoco.exec-> IOException: 不兼容的版本1007
当我使用调试开关调用 maven build 时,就会发现这个原因
Caused by: java.io.IOException: Incompatible version 1007.
at org.jacoco.core.data.ExecutionDataReader.readHeader(ExecutionDataReader.java:127)
at org.jacoco.core.data.ExecutionDataReader.readBlock(ExecutionDataReader.java:107)
at org.jacoco.core.data.ExecutionDataReader.read(ExecutionDataReader.java:87)
at org.sonar.plugins.jacoco.AbstractAnalyzer.readExecutionData(AbstractAnalyzer.java:134)
at org.sonar.plugins.jacoco.AbstractAnalyzer.analyse(AbstractAnalyzer.java:107)
在检查 jacoco ExectionDataReader 时,我发现异常是从
if (version != ExecutionDataWriter.FORMAT_VERSION) {
throw new IOException(format("Incompatible version %x.",Integer.valueOf(version)));
}
从 ExectionDataWriter 我发现
/** File format version, will be incremented for each incompatible change. */
public static final char FORMAT_VERSION = 0x1007;
这个 不相容的改变是什么? 为什么会发生? 有什么办法解决这个挑战吗?