Soheb Khalid
Soheb Khalid

Reputation: 321

"SonarQube requires Java 11+ to run" for java 1.8.0_221

I have downloaded SonarQube (7.9.x LTS (July 2019)).

I have java version "1.8.0_221" in 64bit windows machine. Environment variable JAVA_HOME is set to C:\Program Files\Java\jdk1.8.0_221, path: C:\Program Files\Java\jdk1.8.0_221\bin & C:\Program Files\Java\jre1.8.0_221\bin.

I encountered following error while running StartSonar.bat

jvm 1    | Wrapper (Version 3.2.3) http://wrapper.tanukisoftware.org
jvm 1    |   Copyright 1999-2006 Tanuki Software, Inc.  All Rights Reserved.
jvm 1    |
jvm 1    |
jvm 1    | WrapperSimpleApp: Encountered an error running main: java.lang.IllegalStateException: SonarQube requires Java 11+ to run
jvm 1    | java.lang.IllegalStateException: SonarQube requires Java 11+ to run
jvm 1    |      at org.sonar.application.App.checkJavaVersion(App.java:93)
jvm 1    |      at org.sonar.application.App.start(App.java:56)
jvm 1    |      at org.sonar.application.App.main(App.java:98)
jvm 1    |      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
jvm 1    |      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
jvm 1    |      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
jvm 1    |      at java.lang.reflect.Method.invoke(Method.java:498)
jvm 1    |      at org.tanukisoftware.wrapper.WrapperSimpleApp.run(WrapperSimpleApp.java:240)
jvm 1    |      at java.lang.Thread.run(Thread.java:748)
wrapper  | <-- Wrapper Stopped
Press any key to continue . . .

I have tried to implement solutions that I found in various blogs,but still no luck. I tried by making changes in wrapper.conf file at command

wrapper.java.command=java

or

wrapper.java.command=C:\Program Files\Java\jdk1.8.0_221\bin\java

as well as

wrapper.java.command=C:\Program Files\Java\jdk1.8.0_221\bin\java

Please suggest solution for this issue. Note: I am running StartSonar.bat without admin permission don't know if it has any impact.

Upvotes: 21

Views: 58346

Answers (6)

BustedSanta
BustedSanta

Reputation: 1388

In sonarqube-9.8.0, there is a file called find_java.bat

C:...\sonar-qube-980\bin\windows-x86-64\lib\find_java.bat

the file states:

"rem if the environmental variable SONAR_JAVA_PATH is set, override the default java.exe"

this means that if you create a new environment variable SONAR_JAVA_PATH and set the value to point to your JDK11, SonarQube will pick up this value.

Variable: SONAR_JAVA_PATH
Value: C:...\jdk-11.0.18\bin\java.exe

Once this is setup, start your SonarQube instance via StartSonar.bat

"C:...\sonar-qube-980\bin\windows-x86-64\StartSonar.bat"

Upvotes: 2

jboldia
jboldia

Reputation: 21

I encountered a similar situation. I had JDK 11 installed and SQ was fine with it. It was the only Java on my machine. Then, there was an organization wide push of Java 8 which reset the path system environment variable to Java 8, thereby disrupting the ability to run SQ (even though Java 11 was still present.)

Removing Java 8 was not a solution since doing so would result in the absence of Java 8 being detected and provoke another automated push of Java 8 and the corresponding reset of the path system environment variable. The scanner looks no deeper than the presence of Java 8. So, as long as it is there, it does not touch the path system environment variable.

Resetting the path system environment variable to Java 11 and setting JAVA_HOME was solution. SQ saw Java 11, so it could run and the scanner saw Java 8, so it took no further action.

Upvotes: 0

Yang You
Yang You

Reputation: 2668

Install JDK version 11 (download from https://www.oracle.com/technetwork/java/javase/downloads/jdk11-downloads-5066655.html). If the download link not working, google "JDK 11 download".

and change the value for the line below in <sonar>\conf\wrapper.conf:

wrapper.java.command=C:\Program Files\Java\jdk-11.0.6\bin\java

Upvotes: 62

Amila Viraj
Amila Viraj

Reputation: 1064

Please follow the below steps:

  1. First you need to download and install java 11 as SonarQube requires java 11 as the support platform.

  2. If you have not set the default java path environment to jdk 11 (if you have another java version, i.e. jdk 1.8 set as default java path in your system), then you need to follow the below step, (Otherwise you don't need this configuration and you can just run)

    • Go to the SonarQube folder path and open the "wrapper.conf" file inside the "conf" folder.
    • Just comment the default java configuration and set new java 11 path configuration as below,

      
       #wrapper.java.command=java
       wrapper.java.command=C:\Program Files\Java\jdk-11.0.7\bin\java
      
      

      (note: please copy the java 11 path from your machine , don't copy the above sample path)

Now you should be able to run successfully.

Upvotes: 12

Deepak Rajpal
Deepak Rajpal

Reputation: 1011

There are useful links given in other comments to install JAVA JDK 11 in above link. However, I would recommend to install latest version from following link (because you have just downloaded latest sonarqube) for better compatibly.

SDK download link: https://www.oracle.com/java/technologies/javase-downloads.html

Upvotes: 0

It's explicit in the "Release 7.9 LTS Upgrade Notes" announcement SonarQube upgrade notes

The SonarQube server now requires Java 11.

There's no possible workaround, but this concern only the SonarQube server part, not the machines that analyze your projects on which you may continue to use Java 8 (using sonar-scanner, maven, gradle, ...).

Upvotes: 5

Related Questions