JRE Provisionning, sonar maven plugin 5.0.0, lib/server/classes.jsa empty

Hi !

We’re using maven 3.9, JDK 17, Jenkins Cloubees CI, and the latest version of sonar-maven-plugin to audit our Java projects.

2 days ago, version 5.0.0.4389 was released in maven central. Before that, we were using 4.0.0, no issues.

I saw this thread, but it didn’t really help : SonarCloudAnalyze@2 task fails in Azure DevOps pipeline with "Failed to extract archive" - #13 by skabra

Since version 5, even if we’ve always specified JAVA_HOME=${path_to_jdk17}, it looks like the plugin always tries to use the “JRE Provisionning”.

As I can see when the debug is activated, it downloads the JDK without any issue, then it extracts the JDK (in .sonar/cache), then it tries to use the lib/server/classes.jsa, but for some reasons, this file (and only this file) is empty and the build crashes ! It’s here but size=0kb !

I tried to manually extract the tar.gz of the jdk that was downloaded, and when I check, the classes.jsa file is correct (around 10Mb).

Here’s an extract of the log :

[DEBUG] Create: /my_job_workspace/.sonar/cache
[INFO] User cache: /my_job_workspace/.sonar/cache
[DEBUG] Create: /my_job_workspace/.sonar/cache/_tmp
[DEBUG] Loaded [477] system trusted certificates
[DEBUG] --> GET https://sonar.mycompany.com/api/v2/analysis/version
[DEBUG] <-- 200 https://sonar.mycompany.com/api/v2/analysis/version (168ms, 12-byte body)
[INFO] JRE provisioning: os[linux], arch[x86_64]
[DEBUG] --> GET https://sonar.mycompany.com/api/v2/analysis/jres?os=linux&arch=x86_64
[DEBUG] <-- 200 https://sonar.mycompany.com/api/v2/analysis/jres?os=linux&arch=x86_64 (26ms, unknown-length body)
[DEBUG] Download https://sonar.mycompany.com/api/v2/analysis/jres/9fe68398-f6a1-4c70-993f-72253d2704b0 to /my_job_workspace/.sonar/cache/_tmp/fileCache16652571721628855271.tmp
[DEBUG] --> GET https://sonar.mycompany.com/api/v2/analysis/jres/9fe68398-f6a1-4c70-993f-72253d2704b0
[DEBUG] <-- 200 https://sonar.mycompany.com/api/v2/analysis/jres/9fe68398-f6a1-4c70-993f-72253d2704b0 (21ms, unknown-length body)
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary for myproject 1.0.0-SNAPSHOT:
[INFO] 
[INFO] myproject ................... FAILURE [  5.106 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  6.932 s
[INFO] Finished at: 2024-11-07T12:00:44-05:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.sonarsource.scanner.maven:sonar-maven-plugin:5.0.0.4389:sonar (default-cli) on project myproject: Failed to extract archive: /my_job_workspace/.sonar/cache/bcb1b7b8ad68c93093f09b591b7cb17161d39891f7d29d33a586f5a328603707/jre13963618380392733196/jdk-17.0.11+9-jre/lib/server/classes.jsa -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.sonarsource.scanner.maven:sonar-maven-plugin:5.0.0.4389:sonar (default-cli) on project n3-infonuagique-test-integration: Failed to extract archive
    at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2 (MojoExecutor.java:375)
    at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute (MojoExecutor.java:351)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:215)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:171)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:163)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:299)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:193)
    at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:106)
    at org.apache.maven.cli.MavenCli.execute (MavenCli.java:963)
    at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:296)
    at org.apache.maven.cli.MavenCli.main (MavenCli.java:199)
    at jdk.internal.reflect.DirectMethodHandleAccessor.invoke (DirectMethodHandleAccessor.java:103)
    at java.lang.reflect.Method.invoke (Method.java:580)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347)
Caused by: org.apache.maven.plugin.MojoExecutionException: Failed to extract archive
    at org.sonarsource.scanner.maven.bootstrap.ScannerBootstrapper.execute (ScannerBootstrapper.java:80)
    at org.sonarsource.scanner.maven.SonarQubeMojo.execute (SonarQubeMojo.java:109)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:137)
    at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2 (MojoExecutor.java:370)
    at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute (MojoExecutor.java:351)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:215)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:171)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:163)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:299)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:193)
    at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:106)
    at org.apache.maven.cli.MavenCli.execute (MavenCli.java:963)
    at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:296)
    at org.apache.maven.cli.MavenCli.main (MavenCli.java:199)
    at jdk.internal.reflect.DirectMethodHandleAccessor.invoke (DirectMethodHandleAccessor.java:103)
    at java.lang.reflect.Method.invoke (Method.java:580)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347)
Caused by: java.lang.IllegalStateException: Failed to extract archive
    at org.sonarsource.scanner.lib.internal.JavaRunnerFactory.extractArchive (JavaRunnerFactory.java:200)
    at org.sonarsource.scanner.lib.internal.JavaRunnerFactory.getJreFromServer (JavaRunnerFactory.java:145)
    at org.sonarsource.scanner.lib.internal.JavaRunnerFactory.createRunner (JavaRunnerFactory.java:85)
    at org.sonarsource.scanner.lib.internal.ScannerEngineLauncherFactory.createLauncher (ScannerEngineLauncherFactory.java:53)
    at org.sonarsource.scanner.lib.ScannerEngineBootstrapper.bootstrap (ScannerEngineBootstrapper.java:123)
    at org.sonarsource.scanner.maven.bootstrap.ScannerBootstrapper.execute (ScannerBootstrapper.java:69)
    at org.sonarsource.scanner.maven.SonarQubeMojo.execute (SonarQubeMojo.java:109)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:137)
    at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2 (MojoExecutor.java:370)
    at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute (MojoExecutor.java:351)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:215)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:171)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:163)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:299)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:193)
    at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:106)
    at org.apache.maven.cli.MavenCli.execute (MavenCli.java:963)
    at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:296)
    at org.apache.maven.cli.MavenCli.main (MavenCli.java:199)
    at jdk.internal.reflect.DirectMethodHandleAccessor.invoke (DirectMethodHandleAccessor.java:103)
    at java.lang.reflect.Method.invoke (Method.java:580)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347)
Caused by: java.nio.file.NoSuchFileException: /app/agent-complet/workspace/Produits/n3-java/ic/N3/n3-infonuagique-test-integration.main_4_4.build-bugsonar-jdk21/.sonar/cache/bcb1b7b8ad68c93093f09b591b7cb17161d39891f7d29d33a586f5a328603707/jre13963618380392733196/jdk-17.0.11+9-jre/lib/server/classes.jsa
    at sun.nio.fs.UnixException.translateToIOException (UnixException.java:92)
    at sun.nio.fs.UnixException.rethrowAsIOException (UnixException.java:106)
    at sun.nio.fs.UnixException.rethrowAsIOException (UnixException.java:111)
    at sun.nio.fs.UnixFileSystemProvider.newByteChannel (UnixFileSystemProvider.java:261)
    at java.nio.file.spi.FileSystemProvider.newOutputStream (FileSystemProvider.java:482)
    at java.nio.file.Files.newOutputStream (Files.java:227)
    at java.nio.file.Files.copy (Files.java:3140)
    at org.sonarsource.scanner.lib.internal.util.CompressionUtils.extractTarGz (CompressionUtils.java:146)
    at org.sonarsource.scanner.lib.internal.JavaRunnerFactory.extract (JavaRunnerFactory.java:234)
    at org.sonarsource.scanner.lib.internal.JavaRunnerFactory.extractArchive (JavaRunnerFactory.java:193)
    at org.sonarsource.scanner.lib.internal.JavaRunnerFactory.getJreFromServer (JavaRunnerFactory.java:145)
    at org.sonarsource.scanner.lib.internal.JavaRunnerFactory.createRunner (JavaRunnerFactory.java:85)
    at org.sonarsource.scanner.lib.internal.ScannerEngineLauncherFactory.createLauncher (ScannerEngineLauncherFactory.java:53)
    at org.sonarsource.scanner.lib.ScannerEngineBootstrapper.bootstrap (ScannerEngineBootstrapper.java:123)
    at org.sonarsource.scanner.maven.bootstrap.ScannerBootstrapper.execute (ScannerBootstrapper.java:69)
    at org.sonarsource.scanner.maven.SonarQubeMojo.execute (SonarQubeMojo.java:109)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:137)
    at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2 (MojoExecutor.java:370)
    at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute (MojoExecutor.java:351)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:215)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:171)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:163)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:299)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:193)
    at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:106)
    at org.apache.maven.cli.MavenCli.execute (MavenCli.java:963)
    at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:296)
    at org.apache.maven.cli.MavenCli.main (MavenCli.java:199)
    at jdk.internal.reflect.DirectMethodHandleAccessor.invoke (DirectMethodHandleAccessor.java:103)
    at java.lang.reflect.Method.invoke (Method.java:580)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347)

I don’t know how to deactivate the JRE Provisionning, as I said earlier, we’ve always been using JAVA_HOME=${jdk17}, I even tried JDK 21, same issue…
I don’t mind using this provisionning, but why is the classes file empty ? And if it can’t be fixed, could you add the possibility to deactivate the provisionning ?

Meanwhile, I’ve forced version 4 to fix the issue, but I can’t stay on version 4 forever.

Thank you,
Isabelle

Hi,

Settting the property sonar.scanner.skipJreProvisioning to true or setting the envrionment variable SONAR_SCANNER_SKIP_JRE_PROVISIONING should do the trick.

1 Like

The simplest solution for Jenkins is to set the environment variable SONAR_SCANNER_SKIP_JRE_PROVISIONING to true as Scott said, and it works, see

1 Like

Thank you so much !

I confirm that setting SONAR_SCANNER_SKIP_JRE_PROVISIONING fixed my issue.

1 Like

Hi @Isabelle_Guimiot ,

Disabling the JRE provisionning is only a workaround, it would be more future-proof to understand and fix the issue. This might be caused by a proxy messing up the JRE archive, or some anti-virus software putting the file in quarantine.

I created a ticket to track the investigation’s progress, but any information or reproducer is welcome since I have no idea of the root cause for now.