我正在使用SonarQube进行代码质量控制,突然之间,原本可以通过的构建无法分析,并且失败了。
目标信息分析/mySuperProject/
/Jacoco.exec -> java.io.IOException:不兼容版本1007
当我使用debug开关调用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 ExecutionDataReader时,我发现异常是从
if (version != ExecutionDataWriter.FORMAT_VERSION) {
throw new IOException(format("Incompatible version %x.",Integer.valueOf(version)));
}
从ExecutionDataWriter我发现了
/** File format version, will be incremented for each incompatible change. */
public static final char FORMAT_VERSION = 0x1007;
这个不兼容的更改是什么?为什么会发生这种情况?有什么办法来解决这个挑战吗?
发布于 2015-05-27 03:10:26
如前所述,这是由于JaCoCo maven插件代码中断造成的。您可以(临时)在jenkins maven命令中指定版本,如下所示:
clean org.jacoco:jacoco-maven-plugin:<version>:prepare-agent install
例如:
clean org.jacoco:jacoco-maven-plugin:0.7.4.201502262128:prepare-agent install
这是帮助我们的变通方法。但像大多数人一样,我仍然在等待修复的到来。
发布于 2015-05-26 21:45:25
我所做的是在我的maven项目中指定jacoco版本。
<jacoco-maven-plugin.version>0.7.4.201502262128</jacoco-maven-plugin.version>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>${jacoco-maven-plugin.version}</version>
</plugin>
这解决了我的问题!
发布于 2015-05-26 21:16:46
这很可能是由最新的jacoco-maven-plugin更新引起的。一切都在0.7.4.201502262128上运行,但今天我们切换到了0.7.5.201505241946,这导致了这个错误。
https://stackoverflow.com/questions/30459260
复制相似问题