java.lang.NoClassDefFoundError: com/google/gson/Gson

SonarQube version: “Enterprise Edition * Version 8.3.1 (build 34397)”
Scanner version: 4.4.0.2170
SonarQube Scanner for Jenkins 2.12
Java: openJDK 11

I would like to get Bitbucket pull requests scanned by SonarQube.

The first build of every pull request builds and scans without problems.

The second and following builds results in the following error.

The scan never fails when running from a local docker container.

I have tried with and without the “SonarQube Scanner for Jenkins”.

What can cause this?

[2020-09-16T20:23:33.445Z] java.lang.NoClassDefFoundError: com/google/gson/Gson
[2020-09-16T20:23:33.445Z] 	at com.sonarsource.rpg.plugin.RpgRulesDefinition.<init>(Unknown Source)
[2020-09-16T20:23:33.445Z] 	at com.sonarsource.rpg.plugin.RpgPlugin.define(Unknown Source)
[2020-09-16T20:23:33.445Z] 	at org.sonar.scanner.bootstrap.ExtensionInstaller.install(ExtensionInstaller.java:60)
[2020-09-16T20:23:33.445Z] 	at org.sonar.scanner.scan.ProjectScanContainer.addScannerExtensions(ProjectScanContainer.java:313)
[2020-09-16T20:23:33.445Z] 	at org.sonar.scanner.scan.ProjectScanContainer.doBeforeStart(ProjectScanContainer.java:150)
[2020-09-16T20:23:33.445Z] 	at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:135)
[2020-09-16T20:23:33.445Z] 	at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:123)
[2020-09-16T20:23:33.445Z] 	at org.sonar.scanner.bootstrap.GlobalContainer.doAfterStart(GlobalContainer.java:141)
[2020-09-16T20:23:33.445Z] 	at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:137)
[2020-09-16T20:23:33.445Z] 	at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:123)
[2020-09-16T20:23:33.445Z] 	at org.sonar.batch.bootstrapper.Batch.doExecute(Batch.java:72)
[2020-09-16T20:23:33.445Z] 	at org.sonar.batch.bootstrapper.Batch.execute(Batch.java:66)
[2020-09-16T20:23:33.445Z] 	at org.sonarsource.scanner.api.internal.batch.BatchIsolatedLauncher.execute(BatchIsolatedLauncher.java:46)
[2020-09-16T20:23:33.445Z] 	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[2020-09-16T20:23:33.445Z] 	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
[2020-09-16T20:23:33.445Z] 	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
[2020-09-16T20:23:33.445Z] 	at java.base/java.lang.reflect.Method.invoke(Unknown Source)
[2020-09-16T20:23:33.445Z] 	at org.sonarsource.scanner.api.internal.IsolatedLauncherProxy.invoke(IsolatedLauncherProxy.java:60)
[2020-09-16T20:23:33.446Z] 	at com.sun.proxy.$Proxy0.execute(Unknown Source)
[2020-09-16T20:23:33.446Z] 	at org.sonarsource.scanner.api.EmbeddedScanner.doExecute(EmbeddedScanner.java:189)
[2020-09-16T20:23:33.446Z] 	at org.sonarsource.scanner.api.EmbeddedScanner.execute(EmbeddedScanner.java:138)
[2020-09-16T20:23:33.446Z] 	at org.sonarsource.scanner.cli.Main.execute(Main.java:112)
[2020-09-16T20:23:33.446Z] 	at org.sonarsource.scanner.cli.Main.execute(Main.java:75)
[2020-09-16T20:23:33.446Z] 	at org.sonarsource.scanner.cli.Main.main(Main.java:61)
[2020-09-16T20:23:33.446Z] Caused by: java.lang.ClassNotFoundException: com.google.gson.Gson
[2020-09-16T20:23:33.446Z] 	at org.sonar.classloader.ParentFirstStrategy.loadClass(ParentFirstStrategy.java:39)
[2020-09-16T20:23:33.446Z] 	at org.sonar.classloader.ClassRealm.loadClass(ClassRealm.java:87)
[2020-09-16T20:23:33.446Z] 	at org.sonar.classloader.ClassRealm.loadClass(ClassRealm.java:76)
[2020-09-16T20:23:33.446Z] 	... 24 more

Turns out the issue was user rights when running the docker container from Jenkins.

This is a known issue and workaround can be found here: https://issues.jenkins-ci.org/browse/JENKINS-47026

1 Like

This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.