I’m using Sonar Gradle plugin connected to SonarCloud. Scan reports a warning:
> Task :sonar
WARN: zip END header not found: /builds/my-project/gradle-cache/caches/modules-2/files-2.1/com.sun.xml.ws/jaxws-ri/2.3.2/15ee0d893c452db7c4865eacb37cf5355c6c5cd7/jaxws-ri-2.3.2.pom
java.util.zip.ZipException: zip END header not found
at java.base/java.util.zip.ZipFile$Source.zerror(ZipFile.java:1607)
at java.base/java.util.zip.ZipFile$Source.findEND(ZipFile.java:1497)
at java.base/java.util.zip.ZipFile$Source.initCEN(ZipFile.java:1504)
at java.base/java.util.zip.ZipFile$Source.<init>(ZipFile.java:1308)
at java.base/java.util.zip.ZipFile$Source.get(ZipFile.java:1271)
at java.base/java.util.zip.ZipFile$CleanableResource.<init>(ZipFile.java:733)
at java.base/java.util.zip.ZipFile$CleanableResource.get(ZipFile.java:850)
at java.base/java.util.zip.ZipFile.<init>(ZipFile.java:248)
at java.base/java.util.zip.ZipFile.<init>(ZipFile.java:177)
at java.base/java.util.zip.ZipFile.<init>(ZipFile.java:191)
at org.jetbrains.kotlin.com.intellij.openapi.vfs.impl.ZipHandler$1.createAccessor(ZipHandler.java:22)
at org.jetbrains.kotlin.com.intellij.openapi.vfs.impl.ZipHandler$1.createAccessor(ZipHandler.java:15)
at org.jetbrains.kotlin.com.intellij.util.io.FileAccessorCache.createHandle(FileAccessorCache.java:45)
at org.jetbrains.kotlin.com.intellij.util.io.FileAccessorCache.get(FileAccessorCache.java:39)
at org.jetbrains.kotlin.com.intellij.openapi.vfs.impl.ZipHandler.acquireZipHandle(ZipHandler.java:46)
at org.jetbrains.kotlin.com.intellij.openapi.vfs.impl.ZipHandlerBase.createEntriesMap(ZipHandlerBase.java:66)
at org.jetbrains.kotlin.com.intellij.openapi.vfs.impl.ArchiveHandler.getEntriesMap(ArchiveHandler.java:181)
at org.jetbrains.kotlin.com.intellij.openapi.vfs.impl.jar.CoreJarHandler.<init>(CoreJarHandler.java:26)
at org.jetbrains.kotlin.com.intellij.openapi.vfs.impl.jar.CoreJarFileSystem.lambda$new$0(CoreJarFileSystem.java:17)
at org.jetbrains.kotlin.com.intellij.util.containers.ConcurrentFactoryMap$2.create(ConcurrentFactoryMap.java:174)
at org.jetbrains.kotlin.com.intellij.util.containers.ConcurrentFactoryMap.get(ConcurrentFactoryMap.java:40)
at org.jetbrains.kotlin.com.intellij.openapi.vfs.impl.jar.CoreJarFileSystem.findFileByPath(CoreJarFileSystem.java:28)
at org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment.findJarRoot(KotlinCoreEnvironment.kt:399)
at org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment.contentRootToVirtualFile(KotlinCoreEnvironment.kt:377)
at org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment.access$contentRootToVirtualFile(KotlinCoreEnvironment.kt:107)
at org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment$2.invoke(KotlinCoreEnvironment.kt:224)
at org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment$2.invoke(KotlinCoreEnvironment.kt:107)
at org.jetbrains.kotlin.cli.jvm.compiler.ClasspathRootsResolver.convertClasspathRoots(ClasspathRootsResolver.kt:76)
at org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment.<init>(KotlinCoreEnvironment.kt:233)
at org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment.<init>(KotlinCoreEnvironment.kt:107)
at org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment$Companion.createForProduction(KotlinCoreEnvironment.kt:442)
at org.sonarsource.kotlin.api.frontend.KotlinCoreEnvironmentToolsKt.kotlinCoreEnvironment(KotlinCoreEnvironmentTools.kt:70)
at org.sonarsource.kotlin.api.frontend.Environment.<init>(KotlinCoreEnvironmentTools.kt:55)
at org.sonarsource.kotlin.api.frontend.Environment.<init>(KotlinCoreEnvironmentTools.kt:47)
at org.sonarsource.kotlin.api.sensors.AbstractKotlinSensorExecuteContextKt.environment(AbstractKotlinSensorExecuteContext.kt:154)
at org.sonarsource.kotlin.api.sensors.AbstractKotlinSensorExecuteContext$environment$2.invoke(AbstractKotlinSensorExecuteContext.kt:66)
at org.sonarsource.kotlin.api.sensors.AbstractKotlinSensorExecuteContext$environment$2.invoke(AbstractKotlinSensorExecuteContext.kt:65)
at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74)
at org.sonarsource.kotlin.api.sensors.AbstractKotlinSensorExecuteContext.getEnvironment(AbstractKotlinSensorExecuteContext.kt:65)
at org.sonarsource.kotlin.api.sensors.AbstractKotlinSensorExecuteContext$kotlinFiles$2.invoke(AbstractKotlinSensorExecuteContext.kt:73)
at org.sonarsource.kotlin.api.sensors.AbstractKotlinSensorExecuteContext$kotlinFiles$2.invoke(AbstractKotlinSensorExecuteContext.kt:69)
at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74)
at org.sonarsource.kotlin.api.sensors.AbstractKotlinSensorExecuteContext.getKotlinFiles(AbstractKotlinSensorExecuteContext.kt:69)
at org.sonarsource.kotlin.api.sensors.AbstractKotlinSensorExecuteContext.analyzeFiles(AbstractKotlinSensorExecuteContext.kt:93)
at org.sonarsource.kotlin.api.sensors.AbstractKotlinSensor.execute(AbstractKotlinSensor.kt:68)
at org.sonar.scanner.sensor.AbstractSensorWrapper.analyse(AbstractSensorWrapper.java:62)
at org.sonar.scanner.sensor.ModuleSensorsExecutor.execute(ModuleSensorsExecutor.java:75)
at org.sonar.scanner.sensor.ModuleSensorsExecutor.lambda$execute$1(ModuleSensorsExecutor.java:48)
at org.sonar.scanner.sensor.ModuleSensorsExecutor.withModuleStrategy(ModuleSensorsExecutor.java:66)
at org.sonar.scanner.sensor.ModuleSensorsExecutor.execute(ModuleSensorsExecutor.java:48)
at org.sonar.scanner.scan.ModuleScanContainer.doAfterStart(ModuleScanContainer.java:64)
at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:123)
at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:109)
at org.sonar.scanner.scan.ProjectScanContainer.scan(ProjectScanContainer.java:163)
at org.sonar.scanner.scan.ProjectScanContainer.scanRecursively(ProjectScanContainer.java:159)
at org.sonar.scanner.scan.ProjectScanContainer.scanRecursively(ProjectScanContainer.java:156)
at org.sonar.scanner.scan.ProjectScanContainer.doAfterStart(ProjectScanContainer.java:130)
at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:123)
at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:109)
at org.sonar.scanner.bootstrap.ScannerContainer.doAfterStart(ScannerContainer.java:396)
at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:123)
at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:109)
at org.sonar.scanner.bootstrap.GlobalContainer.doAfterStart(GlobalContainer.java:128)
at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:123)
at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:109)
at org.sonar.batch.bootstrapper.Batch.doExecute(Batch.java:57)
at org.sonar.batch.bootstrapper.Batch.execute(Batch.java:51)
at org.sonarsource.scanner.api.internal.batch.BatchIsolatedLauncher.execute(BatchIsolatedLauncher.java:46)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at org.sonarsource.scanner.api.internal.IsolatedLauncherProxy.invoke(IsolatedLauncherProxy.java:60)
at com.sun.proxy.$Proxy133.execute(Unknown Source)
at org.sonarsource.scanner.api.EmbeddedScanner.doExecute(EmbeddedScanner.java:189)
at org.sonarsource.scanner.api.EmbeddedScanner.execute(EmbeddedScanner.java:138)
at org.sonarqube.gradle.SonarTask.run(SonarTask.java:131)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:125)
at org.gradle.api.internal.project.taskfactory.StandardTaskAction.doExecute(StandardTaskAction.java:58)
I’m using Gradle 8.2.1 with OpenJDK 11.0.19, but the error appeared long ago, probably when I was using Gradle 7.5. It also appeared in an old version of Sonar Plugin: for sure it happened in 4.2.1.3168. It still happens in 4.4.0.3356 (the stacktrace is for 4.4).
Cleaning Gradle cache (~/.gradle) does not help.
I think it’s a bug in the plugin. According to the log, it tries to open POM (XML text) as a ZIP archive.
To reproduce, try to add a dependency on adwords-axis. Here is my dependency graph leading to jaxws-ri:
com.sun.xml.ws:jaxws-ri:2.3.2
\--- com.google.api-ads:ads-lib:4.20.0
+--- com.google.api-ads:adwords-axis:4.20.0
| \--- project :my-project
| \--- runtimeClasspath