Estoy usando SonarQube para el control de calidad del código y, de repente, las compilaciones que de otro modo pasarían no se pueden analizar y fallan.
[INFO] [00: 00: 03.630] Analizando /mySuperProject/target/jacoco.exec -> java.io.IOException: Versión incompatible 1007
Cuando invoco la compilación de maven con el interruptor de depuración, se revela esta causa
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)
Mientras inspeccionaba jacoco ExecutionDataReader, encontré que la excepción se lanza desde
if (version != ExecutionDataWriter.FORMAT_VERSION) {
throw new IOException(format("Incompatible version %x.",Integer.valueOf(version)));
}
y de ExecutionDataWriter me enteré
/** File format version, will be incremented for each incompatible change. */
public static final char FORMAT_VERSION = 0x1007;
¿Qué es este cambio incompatible y por qué ocurre? ¿Alguna idea de cómo solucionar este desafío?
Respuestas:
Como ya se mencionó, esto se debe a una interrupción en el código del complemento maven de JaCoCo. Puede (temporalmente) especificar la versión en su comando maven de jenkins como:
p.ej
Esta fue la solución que nos ayudó. Pero como la mayoría de la gente, todavía estoy esperando que llegue la solución.
fuente
Lo que hice fue especificar la versión de jacoco en mi proyecto maven.
¡Eso soluciona mi problema!
fuente
Lo más probable es que sea causado por la última actualización de jacoco-maven-plugin. Todo estaba funcionando en 0.7.4.201502262128 pero hoy cambiamos a 0.7.5.201505241946, lo que resultó en este error.
fuente
Correr:
Esto volverá a generar
.exec
archivos creados por versiones anteriores de jacoco.fuente
Intente actualizar el complemento de Java en el Centro de actualización de SonarQube, esto funciona para mí. Actualicé el complemento de Java de la versión 2.4 a la última 3.13.1.
Centro de actualización de SonarQube -> Actualizaciones de complementos -> Java
fuente
Como lo mencionó kdowbecki, este error probablemente se deba a una actualización de jacoco-maven-plugin.
Es muy probable que su SonarQube esté usando ahora la nueva versión de Jacoco Maven Plugin (probablemente la nueva 0.7.5.201505241946) pero en realidad está intentando leer una versión antigua de un jacoco.exec (en su caso, podría estar leyendo un jacoco.exec generado por jacoco maven plugin versión 0.7.4.201502262128) que da como resultado una incompatibilidad lanzada por JaCoCo.
Para solucionar este problema, debe asegurarse de que todos sus trabajos de SonarQube / Jenkins generen un informe de JaCoCo cada vez y no dependa de una versión anterior de jacoco.exec que podría haber sido generada por un trabajo anterior.
fuente
Para mi esto, al hacer un
mvn install
Error while creating report: Cannot read execution data version 0x1006. This version of JaCoCo uses execution data version 0x1007
significaba que había hecho una generación de arquetipo, pero el arquetipo incluyó accidentalmente el directorio de destino con archivos antiguos de jacoco (o se había registrado en git por accidente). Hacer una limpieza de mvn primero (y verificarlo) resolvió el problema. Supongo que jacoco es reacio a sobrescribir el archivo jacoco.exec con uno nuevo cuando no hay pruebas unitarias para ejecutar o algo así, por lo que el archivo antiguo se conserva y se intenta utilizar para el informe de jacoco. FWIW ...
En general, significa una falta de coincidencia entre la versión del generador y el del reportero.
fuente
Cambié pom.xml como
funcionó para mi
fuente