Sonar Scanner Error: "Not supported on JDK 9+"

I’m running sonar-scanner and I’m getting following error sslSocketFactory(SSLSocketFactory) not supported on JDK 9+

INFO: Scanner configuration file: <ommitted>/sonar-scanner.properties
INFO: Project root configuration file: <ommitted>/sonar-project.properties
INFO: SonarQube Scanner 4.0.0.1744
INFO: Java 11.0.3 AdoptOpenJDK (64-bit)
INFO: Linux 5.0.0-36-generic amd64
INFO: User cache: /home/ganesh/.sonar/cache
INFO: SonarQube server 6.0
INFO: Default locale: "en_IN", source code encoding: "UTF-8" (analysis is platform dependent)
INFO: ------------------------------------------------------------------------
INFO: EXECUTION FAILURE
INFO: ------------------------------------------------------------------------
INFO: Total time: 2.167s
INFO: Final Memory: 4M/20M
INFO: ------------------------------------------------------------------------
ERROR: Error during SonarQube Scanner execution
java.lang.IllegalStateException: Unable to load component class org.sonar.scanner.bootstrap.BatchPluginInstaller
        at org.sonar.core.platform.ComponentContainer$ExtendedDefaultPicoContainer.getComponent(ComponentContainer.java:69)
        at org.picocontainer.DefaultPicoContainer.getComponent(DefaultPicoContainer.java:632)
        at org.picocontainer.parameters.BasicComponentParameter$1.resolveInstance(BasicComponentParameter.java:118)
        at org.picocontainer.parameters.ComponentParameter$1.resolveInstance(ComponentParameter.java:136)
        at org.picocontainer.injectors.SingleMemberInjector.getParameter(SingleMemberInjector.java:78)
        at org.picocontainer.injectors.ConstructorInjector$CtorAndAdapters.getParameterArguments(ConstructorInjector.java:309)
        at org.picocontainer.injectors.ConstructorInjector$1.run(ConstructorInjector.java:335)
        at org.picocontainer.injectors.AbstractInjector$ThreadLocalCyclicDependencyGuard.observe(AbstractInjector.java:270)
        at org.picocontainer.injectors.ConstructorInjector.getComponentInstance(ConstructorInjector.java:364)
        at org.picocontainer.injectors.AbstractInjectionFactory$LifecycleAdapter.getComponentInstance(AbstractInjectionFactory.java:56)
        at org.picocontainer.behaviors.AbstractBehavior.getComponentInstance(AbstractBehavior.java:64)
        at org.picocontainer.behaviors.Stored.getComponentInstance(Stored.java:91)
        at org.picocontainer.DefaultPicoContainer.instantiateComponentAsIsStartable(DefaultPicoContainer.java:1034)
        at org.picocontainer.DefaultPicoContainer.addAdapterIfStartable(DefaultPicoContainer.java:1026)
        at org.picocontainer.DefaultPicoContainer.startAdapters(DefaultPicoContainer.java:1003)
        at org.picocontainer.DefaultPicoContainer.start(DefaultPicoContainer.java:767)
        at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:141)
        at org.sonar.batch.bootstrapper.Batch.start(Batch.java:102)
        at org.sonar.batch.bootstrapper.Batch.start(Batch.java:91)
        at org.sonar.batch.bootstrapper.Batch.execute(Batch.java:75)
        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(Unknown Source)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.base/java.lang.reflect.Method.invoke(Unknown Source)
        at org.sonarsource.scanner.api.internal.IsolatedLauncherProxy.invoke(IsolatedLauncherProxy.java:60)
        at com.sun.proxy.$Proxy0.execute(Unknown Source)
        at org.sonarsource.scanner.api.EmbeddedScanner.doExecute(EmbeddedScanner.java:185)
        at org.sonarsource.scanner.api.EmbeddedScanner.execute(EmbeddedScanner.java:137)
        at org.sonarsource.scanner.cli.Main.execute(Main.java:112)
        at org.sonarsource.scanner.cli.Main.execute(Main.java:75)
        at org.sonarsource.scanner.cli.Main.main(Main.java:61)
Caused by: java.lang.IllegalStateException: Unable to load component class org.sonar.scanner.bootstrap.BatchWsClient
        at org.sonar.core.platform.ComponentContainer$ExtendedDefaultPicoContainer.getComponent(ComponentContainer.java:69)
        at org.picocontainer.DefaultPicoContainer.getComponent(DefaultPicoContainer.java:632)
        at org.picocontainer.parameters.BasicComponentParameter$1.resolveInstance(BasicComponentParameter.java:118)
        at org.picocontainer.parameters.ComponentParameter$1.resolveInstance(ComponentParameter.java:136)
        at org.picocontainer.injectors.SingleMemberInjector.getParameter(SingleMemberInjector.java:78)
        at org.picocontainer.injectors.ConstructorInjector$CtorAndAdapters.getParameterArguments(ConstructorInjector.java:309)
        at org.picocontainer.injectors.ConstructorInjector$1.run(ConstructorInjector.java:335)
        at org.picocontainer.injectors.AbstractInjector$ThreadLocalCyclicDependencyGuard.observe(AbstractInjector.java:270)
        at org.picocontainer.injectors.ConstructorInjector.getComponentInstance(ConstructorInjector.java:364)
        at org.picocontainer.injectors.AbstractInjectionFactory$LifecycleAdapter.getComponentInstance(AbstractInjectionFactory.java:56)
        at org.picocontainer.behaviors.AbstractBehavior.getComponentInstance(AbstractBehavior.java:64)
        at org.picocontainer.behaviors.Stored.getComponentInstance(Stored.java:91)
        at org.picocontainer.DefaultPicoContainer.getInstance(DefaultPicoContainer.java:699)
        at org.picocontainer.DefaultPicoContainer.getComponent(DefaultPicoContainer.java:647)
        at org.sonar.core.platform.ComponentContainer$ExtendedDefaultPicoContainer.getComponent(ComponentContainer.java:67)
        ... 31 more
Caused by: java.lang.UnsupportedOperationException: clientBuilder.sslSocketFactory(SSLSocketFactory) not supported on JDK 9+
        at okhttp3.internal.Jdk9Platform.trustManager(Jdk9Platform.java:78)
        at okhttp3.OkHttpClient$Builder.sslSocketFactory(OkHttpClient.java:554)
        at org.sonarqube.ws.client.HttpConnector.buildClient(HttpConnector.java:104)
        at org.sonarqube.ws.client.HttpConnector.<init>(HttpConnector.java:86)
        at org.sonarqube.ws.client.HttpConnector.<init>(HttpConnector.java:52)
        at org.sonarqube.ws.client.HttpConnector$Builder.build(HttpConnector.java:298)
        at org.sonar.scanner.bootstrap.BatchWsClientProvider.provide(BatchWsClientProvider.java:58)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.base/java.lang.reflect.Method.invoke(Unknown Source)
        at org.picocontainer.injectors.MethodInjector.invokeMethod(MethodInjector.java:129)
        at org.picocontainer.injectors.MethodInjector.access$000(MethodInjector.java:39)
        at org.picocontainer.injectors.MethodInjector$2.run(MethodInjector.java:113)
        at org.picocontainer.injectors.AbstractInjector$ThreadLocalCyclicDependencyGuard.observe(AbstractInjector.java:270)
        at org.picocontainer.injectors.MethodInjector.decorateComponentInstance(MethodInjector.java:120)
        at org.picocontainer.injectors.CompositeInjector.decorateComponentInstance(CompositeInjector.java:58)
        at org.picocontainer.injectors.Reinjector.reinject(Reinjector.java:142)
        at org.picocontainer.injectors.ProviderAdapter.getComponentInstance(ProviderAdapter.java:96)
        at org.picocontainer.DefaultPicoContainer.getInstance(DefaultPicoContainer.java:699)
        at org.picocontainer.DefaultPicoContainer.getComponent(DefaultPicoContainer.java:647)
        at org.sonar.core.platform.ComponentContainer$ExtendedDefaultPicoContainer.getComponent(ComponentContainer.java:67)

The JDK that comes with SonarScanner zip has JDK 11. Is this a bug or am I missing anything?

Looks like you’re running SonarQube v6.0 – That’s two LTS versions behind. :slight_smile: You should upgrade to at least v6.7 LTS, as a pitstop before v7.9 LTS :slight_smile:

Until then, maybe stick with v3.x of the SonarQube scanner which packaged Java 8.

Unfortunately it’s maintained by organization so can’t upgrade that easy.
I changed code which was using JAVA_HOME as JRE coming with SonarScanner package. Once I changed it to default JAVA_HOME, it started working fine.

I’ll try out 3.x version as well.

Hi,

i have similar issue but using JRE 1.8.X. Could you tell me what should be fix to have no sonar runner errors ?

	[Step 3/3] E:\TCBuildAgent\plugins\sonar-plugin-agent\sonar-qube-runner\bin\..
[08:35:37]	[Step 3/3] SonarQube Runner 2.4
[08:35:37]	[Step 3/3] Java 1.8.0_261 Oracle Corporation (64-bit)
[08:35:37]	[Step 3/3] Windows Server 2012 R2 6.3 amd64
[08:35:37]	[Step 3/3] INFO: Error stacktraces are turned on.
[08:35:37]	[Step 3/3] INFO: Runner configuration file: E:\TCBuildAgent\plugins\sonar-plugin-agent\sonar-qube-runner\bin\..\conf\sonar-runner.properties
[08:35:37]	[Step 3/3] INFO: Project configuration file: NONE
[08:35:37]	[Step 3/3] INFO: Default locale: "en_US", source code encoding: "windows-1252" (analysis is platform dependent)
[08:35:37]	[Step 3/3] INFO: Work directory: E:\TCBuildAgent\work\2337aa12843d5bea\.\.sonar
[08:35:38]	[Step 3/3] INFO: SonarQube Server 6.0
|[08:35:39]|[Step 3/3] Caused by: java.lang.UnsupportedOperationException: clientBuilder.sslSocketFactory(SSLSocketFactory) not supported on JDK 9+|
|---|---|
|[08:35:39]|[Step 3/3] at okhttp3.internal.Jdk9Platform.trustManager(Jdk9Platform.java:78)|