Sonarqube integration and startSonar.bat failed Error(0x2)

23,694

Solution 1

Seems that your update of wrapper.conf is wrong, its first lines after correct edit should look like:

# Path to JVM executable. By default it must be available in PATH.
# Can be an absolute path, for example:
wrapper.java.command=C:\Program Files\Java\jdk1.8.0_77\bin\java
#wrapper.java.command=java

Solution 2

The command java is not in the PATH. Another option if you don't want to edit the PATH variable is to define the absolute path to "java" in conf/wrapper.conf (see property wrapper.java.command).

Solution 3

I have updated JDK path in wrapper.conf file and it worked. Now, Wrapper.conf file looks like below:

# Path to JVM executable. By default it must be available in PATH.
# Can be an absolute path, for example:
wrapper.java.command=C:\Program Files\Java\jdk-11.0.7\bin\java
#wrapper.java.command=java
Share:
23,694

Related videos on Youtube

Davide Donadio
Author by

Davide Donadio

Updated on July 09, 2022

Comments

  • Davide Donadio
    Davide Donadio almost 2 years

    Yesterday I started a new Unreal Engine Project on Visual Studio Team Service, I decided to learn by myself the art of videogames programming. Anyway the best thing I wanted to use for this project was to integrate SonarQube in Visual Studio and get reports from it (I already used it at University and it was really useful for me), but I had some curious Problems:

    1. First of all, I wanted to run the analisys on my Local PC, the problem is that today i ran the bat and i got this problem, I already checked somewhere for this problem but I believe It's not the %JAVA_HOME% Variable.

      Wrapper Started as Console
      Launching a JVM...
      Unable to execute Java command.  Impossibile trovare il file specificato. (0x2)
          "java" -Djava.awt.headless=true -Xms3m -Xmx3m -Djava.library.path="./lib" -classpath "../../lib/jsw/wrapper-3.2.3.jar;../../lib/sonar-application-6.1.jar"
      -Dwrapper.key="GMa9Ff98pvtqrHYZ" -Dwrapper.port=32000 -Dwrapper.jvm.port.min=31000 -Dwrapper.jvm.port.max=31999 -Dwrapper.pid=6352 -Dwrapper.version="3.2.3" -Dwrapper.native_library="wrapper" -Dwrapper.cpu.timeout="10" -Dwrapper.jvmid=1 org.tanukisoftware.wrapper.WrapperSimpleApp org.sonar.application.App
      Critical error: wait for JVM process failed
      
    2. If I'm able to solve this problem I have the necessity to understand how to integrate the code analysis in my Build definition on VSTS Locally (It requires a correct Endpoint and I don't know how to set it).

    3. Last but not least, if i'm am not able to run this Build Definition Locally, is there any online free server that supports SonarQube to use it and finally get a report from SonarQube?

    EDIT:

    Wrapper Config

    # Path to JVM executable. By default it must be available in PATH.
    # Can be an absolute path, for example:
    set Mypath=C:/Program Files
    wrapper.java.command=%Mypath%\Java\jdk1.8.0_77\bin\java
    wrapper.java.command=java
    
    
    #
    # DO NOT EDIT THE FOLLOWING SECTIONS
    #
    
    
    #********************************************************************
    # Wrapper Java
    #********************************************************************
    wrapper.java.additional.1=-Djava.awt.headless=true
    wrapper.java.mainclass=org.tanukisoftware.wrapper.WrapperSimpleApp
    wrapper.java.classpath.1=../../lib/jsw/*.jar
    wrapper.java.classpath.2=../../lib/*.jar
    wrapper.java.library.path.1=./lib
    wrapper.app.parameter.1=org.sonar.application.App
    wrapper.java.initmemory=3
    wrapper.java.maxmemory=3
    
    #********************************************************************
    # Wrapper Logs
    #********************************************************************
    
    wrapper.console.format=PM
    wrapper.console.loglevel=INFO
    wrapper.logfile=../../logs/sonar.log
    wrapper.logfile.format=M
    wrapper.logfile.loglevel=INFO
    
    # Maximum size that the log file will be allowed to grow to before
    #  the log is rolled. Size is specified in bytes.  The default value
    #  of 0, disables log rolling.  May abbreviate with the 'k' (kb) or
    #  'm' (mb) suffix.  For example: 10m = 10 megabytes.
    #wrapper.logfile.maxsize=0
    
    # Maximum number of rolled log files which will be allowed before old
    #  files are deleted.  The default value of 0 implies no limit.
    #wrapper.logfile.maxfiles=0
    
    # Log Level for sys/event log output.  (See docs for log levels)
    wrapper.syslog.loglevel=NONE
    
    #********************************************************************
    # Wrapper Windows Properties
    #********************************************************************
    # Title to use when running as a console
    wrapper.console.title=SonarQube
    
    # Disallow start of multiple instances of an application at the same time on Windows
    wrapper.single_invocation=true
    
    #********************************************************************
    # Wrapper Windows NT/2000/XP Service Properties
    #********************************************************************
    # WARNING - Do not modify any of these properties when an application
    #  using this configuration file has been installed as a service.
    #  Please uninstall the service before modifying this section.  The
    #  service can then be reinstalled.
    
    # Name of the service
    wrapper.ntservice.name=SonarQube
    
    # Display name of the service
    wrapper.ntservice.displayname=SonarQube
    
    # Description of the service
    wrapper.ntservice.description=SonarQube
    
    # Service dependencies.  Add dependencies as needed starting from 1
    wrapper.ntservice.dependency.1=
    
    # Mode in which the service is installed.  AUTO_START or DEMAND_START
    wrapper.ntservice.starttype=AUTO_START
    
    # Allow the service to interact with the desktop.
    wrapper.ntservice.interactive=false
    
    #********************************************************************
    # Forking Properties
    #********************************************************************
    wrapper.disable_restarts=TRUE
    wrapper.ping.timeout=0
    wrapper.shutdown.timeout=3000
    wrapper.jvm_exit.timeout=3000
    

    Sonar Config

        # Property values can:
    # - reference an environment variable, for example sonar.jdbc.url= ${env:SONAR_JDBC_URL}
    # - be encrypted. See http://redirect.sonarsource.com/doc/settings-encryption.html
    
    #--------------------------------------------------------------------------------------------------
    # DATABASE
    #
    # IMPORTANT: the embedded H2 database is used by default. It is recommended for tests but not for
    # production use. Supported databases are MySQL, Oracle, PostgreSQL and Microsoft SQLServer.
    
    # User credentials.
    # Permissions to create tables, indices and triggers must be granted to JDBC user.
    # The schema must be created first.
    #sonar.jdbc.username=
    #sonar.jdbc.password=
    
    #----- Embedded Database (default)
    # H2 embedded database server listening port, defaults to 9092
    #sonar.embeddedDatabase.port=9092
    #----- MySQL 5.6 or greater
    # Only InnoDB storage engine is supported (not myISAM).
    # Only the bundled driver is supported. It can not be changed.
    #sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance
    
    
    #----- Oracle 11g/12c
    # - Only thin client is supported
    # - Only versions 11.2.x and 12.x of Oracle JDBC driver are supported
    # - The JDBC driver must be copied into the directory extensions/jdbc-driver/oracle/
    # - If you need to set the schema, please refer to http://jira.sonarsource.com/browse/SONAR-5000
    #sonar.jdbc.url=jdbc:oracle:thin:@localhost:1521/XE
    
    
    #----- PostgreSQL 8.x/9.x
    # If you don't use the schema named "public", please refer to http://jira.sonarsource.com/browse/SONAR-5000
    #sonar.jdbc.url=jdbc:postgresql://localhost/sonar
    
    
    #----- Microsoft SQLServer 2012/2014 and SQL Azure
    # A database named sonar must exist and its collation must be case-sensitive (CS) and accent-sensitive (AS)
    # Use the following connection string if you want to use integrated security with Microsoft Sql Server
    # Do not set sonar.jdbc.username or sonar.jdbc.password property if you are using Integrated Security
    # For Integrated Security to work, you have to download the Microsoft SQL JDBC driver package from
    # http://www.microsoft.com/en-us/download/details.aspx?displaylang=en&id=11774
    # and copy sqljdbc_auth.dll to your path. You have to copy the 32 bit or 64 bit version of the dll
    # depending upon the architecture of your server machine.
    # This version of SonarQube has been tested with Microsoft SQL JDBC version 4.1
    #sonar.jdbc.url=jdbc:sqlserver://localhost;databaseName=sonar;integratedSecurity=true
    
    # Use the following connection string if you want to use SQL Auth while connecting to MS Sql Server.
    # Set the sonar.jdbc.username and sonar.jdbc.password appropriately.
    #sonar.jdbc.url=jdbc:sqlserver://localhost;databaseName=sonar
    
    
    #----- Connection pool settings
    # The maximum number of active connections that can be allocated
    # at the same time, or negative for no limit.
    # The recommended value is 1.2 * max sizes of HTTP pools. For example if HTTP ports are
    # enabled with default sizes (50, see property sonar.web.http.maxThreads)
    # then sonar.jdbc.maxActive should be 1.2 * (50) = 120.
    #sonar.jdbc.maxActive=60
    
    # The maximum number of connections that can remain idle in the
    # pool, without extra ones being released, or negative for no limit.
    #sonar.jdbc.maxIdle=5
    
    # The minimum number of connections that can remain idle in the pool,
    # without extra ones being created, or zero to create none.
    #sonar.jdbc.minIdle=2
    
    # The maximum number of milliseconds that the pool will wait (when there
    # are no available connections) for a connection to be returned before
    # throwing an exception, or <= 0 to wait indefinitely.
    #sonar.jdbc.maxWait=5000
    
    #sonar.jdbc.minEvictableIdleTimeMillis=600000
    #sonar.jdbc.timeBetweenEvictionRunsMillis=30000
    
    
    
    #--------------------------------------------------------------------------------------------------
    # WEB SERVER
    # Web server is executed in a dedicated Java process. By default heap size is 512Mb.
    # Use the following property to customize JVM options.
    #    Recommendations:
    #
    #    The HotSpot Server VM is recommended. The property -server should be added if server mode
    #    is not enabled by default on your environment:
    #    http://docs.oracle.com/javase/8/docs/technotes/guides/vm/server-class.html
    #
    #    Startup can be long if entropy source is short of entropy. Adding
    #    -Djava.security.egd=file:/dev/./urandom is an option to resolve the problem.
    #    See https://wiki.apache.org/tomcat/HowTo/FasterStartUp#Entropy_Source
    #
    #sonar.web.javaOpts=-Xmx512m -Xms128m -XX:+HeapDumpOnOutOfMemoryError
    
    # Same as previous property, but allows to not repeat all other settings like -Xmx
    #sonar.web.javaAdditionalOpts=
    
    # Binding IP address. For servers with more than one IP address, this property specifies which
    # address will be used for listening on the specified ports.
    # By default, ports will be used on all IP addresses associated with the server.
    #sonar.web.host=0.0.0.0
    
    # Web context. When set, it must start with forward slash (for example /sonarqube).
    # The default value is root context (empty value).
    #sonar.web.context=
    # TCP port for incoming HTTP connections. Default value is 9000.
    sonar.web.port=8888
    
    
    # The maximum number of connections that the server will accept and process at any given time.
    # When this number has been reached, the server will not accept any more connections until
    # the number of connections falls below this value. The operating system may still accept connections
    # based on the sonar.web.connections.acceptCount property. The default value is 50.
    #sonar.web.http.maxThreads=50
    
    # The minimum number of threads always kept running. The default value is 5.
    #sonar.web.http.minThreads=5
    
    # The maximum queue length for incoming connection requests when all possible request processing
    # threads are in use. Any requests received when the queue is full will be refused.
    # The default value is 25.
    #sonar.web.http.acceptCount=25
    
    # By default users are logged out and sessions closed when server is restarted.
    # If you prefer keeping user sessions open, a secret should be defined. Value is
    # HS256 key encoded with base64. It must be unique for each installation of SonarQube.
    # Example of command-line:
    # echo -n "type_what_you_want" | openssl dgst -sha256 -hmac "key" -binary | base64
    #sonar.auth.jwtBase64Hs256Secret=
    
    #--------------------------------------------------------------------------------------------------
    # COMPUTE ENGINE
    # The Compute Engine is responsible for processing background tasks.
    # Compute Engine is executed in a dedicated Java process. Default heap size is 512Mb.
    # Use the following property to customize JVM options.
    #    Recommendations:
    #
    #    The HotSpot Server VM is recommended. The property -server should be added if server mode
    #    is not enabled by default on your environment:
    #    http://docs.oracle.com/javase/8/docs/technotes/guides/vm/server-class.html
    #
    #sonar.ce.javaOpts=-Xmx512m -Xms128m -XX:+HeapDumpOnOutOfMemoryError
    
    # Same as previous property, but allows to not repeat all other settings like -Xmx
    #sonar.ce.javaAdditionalOpts=
    # The number of workers in the Compute Engine. Value must be greater than zero.
    # By default the Compute Engine uses a single worker and therefore processes tasks one at a time.
    #    Recommendations:
    #
    #    Using N workers will require N times as much Heap memory (see property
    #    sonar.ce.javaOpts to tune heap) and produce N times as much IOs on disk, database and
    #    Elasticsearch. The number of workers must suit your environment.
    #sonar.ce.workerCount=1
    
    
    #--------------------------------------------------------------------------------------------------
    # ELASTICSEARCH
    # Elasticsearch is used to facilitate fast and accurate information retrieval.
    # It is executed in a dedicated Java process. Default heap size is 1Gb.
    
    # JVM options of Elasticsearch process
    #    Recommendations:
    #
    #    Use HotSpot Server VM. The property -server should be added if server mode
    #    is not enabled by default on your environment:
    #    http://docs.oracle.com/javase/8/docs/technotes/guides/vm/server-class.html
    #
    #sonar.search.javaOpts=-Xmx1G -Xms256m -Xss256k -Djna.nosys=true \
    #  -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 \
    #  -XX:+UseCMSInitiatingOccupancyOnly -XX:+HeapDumpOnOutOfMemoryError
    
    # Same as previous property, but allows to not repeat all other settings like -Xmx
    #sonar.search.javaAdditionalOpts=
    
    # Elasticsearch port. Default is 9001. Use 0 to get a free port.
    # As a security precaution, should be blocked by a firewall and not exposed to the Internet.
    #sonar.search.port=9001
    
    # Elasticsearch host. The search server will bind this address and the search client will connect to it.
    # Default is 127.0.0.1.
    # As a security precaution, should NOT be set to a publicly available address.
    #sonar.search.host=127.0.0.1
    
    
    #--------------------------------------------------------------------------------------------------
    # UPDATE CENTER
    
    # Update Center requires an internet connection to request https://update.sonarsource.org
    # It is enabled by default.
    #sonar.updatecenter.activate=true
    
    # HTTP proxy (default none)
    #http.proxyHost=
    #http.proxyPort=
    # HTTPS proxy (defaults are values of http.proxyHost and http.proxyPort)
    #https.proxyHost=
    #https.proxyPort=
    
    # NT domain name if NTLM proxy is used
    #http.auth.ntlm.domain=
    
    # SOCKS proxy (default none)
    #socksProxyHost=
    #socksProxyPort=
    
    # Proxy authentication (used for HTTP, HTTPS and SOCKS proxies)
    #http.proxyUser=
    #http.proxyPassword=
    
    
    #--------------------------------------------------------------------------------------------------
    # LOGGING
    
    # Level of logs. Supported values are INFO(default), DEBUG and TRACE (DEBUG + SQL + ES requests)
    #sonar.log.level=INFO
    
    # Path to log files. Can be absolute or relative to installation directory.
    # Default is <installation home>/logs
    #sonar.path.logs=logs
    
    # Rolling policy of log files
    #    - based on time if value starts with "time:", for example by day ("time:yyyy-MM-dd")
    #      or by month ("time:yyyy-MM")
    #    - based on size if value starts with "size:", for example "size:10MB"
    #    - disabled if value is "none".  That needs logs to be managed by an external system like logrotate.
    #sonar.log.rollingPolicy=time:yyyy-MM-dd
    
    # Maximum number of files to keep if a rolling policy is enabled.
    #    - maximum value is 20 on size rolling policy
    #    - unlimited on time rolling policy. Set to zero to disable old file purging.
    #sonar.log.maxFiles=7
    
    # Access log is the list of all the HTTP requests received by server. If enabled, it is stored
    # in the file {sonar.path.logs}/access.log. This file follows the same rolling policy as for
    # sonar.log (see sonar.log.rollingPolicy and sonar.log.maxFiles).
    #sonar.web.accessLogs.enable=true
    
    # Format of access log. It is ignored if sonar.web.accessLogs.enable=false. Possible values are:
    #    - "common" is the Common Log Format, shortcut to: %h %l %u %user %date "%r" %s %b
    #    - "combined" is another format widely recognized, shortcut to: %h %l %u [%t] "%r" %s %b "%i{Referer}" "%i{User-Agent}"
    #    - else a custom pattern. See http://logback.qos.ch/manual/layouts.html#AccessPatternLayout.
    # The login of authenticated user is not implemented with "%u" but with "%reqAttribute{LOGIN}" (since version 6.1).
    # The value displayed for anonymous users is "-".
    # If SonarQube is behind a reverse proxy, then the following value allows to display the correct remote IP address:
    #sonar.web.accessLogs.pattern=%i{X-Forwarded-For} %l %u [%t] "%r" %s %b "%i{Referer}" "%i{User-Agent}"
    # Default value is:
    #sonar.web.accessLogs.pattern=combined
    
    
    #--------------------------------------------------------------------------------------------------
    # OTHERS
    
    # Delay in seconds between processing of notification queue. Default is 60 seconds.
    #sonar.notifications.delay=60
    
    # Paths to persistent data files (embedded database and search index) and temporary files.
    # Can be absolute or relative to installation directory.
    # Defaults are respectively <installation home>/data and <installation home>/temp
    #sonar.path.data=data
    #sonar.path.temp=temp
    
    
    #--------------------------------------------------------------------------------------------------
    # DEVELOPMENT - only for developers
    # The following properties MUST NOT be used in production environments.
    
    # Dev mode allows to reload web sources on changes and to restart server when new versions
    # of plugins are deployed.
    #sonar.web.dev=false
    
    # Path to webapp sources for hot-reloading of Ruby on Rails, JS and CSS (only core,
    # plugins not supported).
    #sonar.web.dev.sources=/path/to/server/sonar-web/src/main/webapp
    
    # Elasticsearch HTTP connector, for example for KOPF:
    # http://lmenezes.com/elasticsearch-kopf/?location=http://localhost:9010
    #sonar.search.httpPort=-1
    
  • Davide Donadio
    Davide Donadio over 7 years
    Hi and Thank you for your answer, but i currently tried to do what you mean editing this line #wrapper.java.command= in wrapper.java.command=C:\Program Files\Java\jdk1.8.0_77 but i still get the same result of the log
  • Davide Donadio
    Davide Donadio over 7 years
    Unfortunately the problem persists even with the comment on the last line
  • Godin
    Godin over 7 years
    @DavideDonadio can believe that some problem persists, but hard to believe that this change doesn't change message, so could you please post updated error message?
  • Davide Donadio
    Davide Donadio over 7 years
    I tried again and this time it seems it works perfectly, I hope everything goes well now, thank you everybody for your time, you have been really precious to help me learn how to solve my problem :)
  • Kasun Rajapaksha
    Kasun Rajapaksha almost 6 years
    @DavideDonadio I face the same problem even after editing the conf. Do you have any idea
  • Valeriy K.
    Valeriy K. over 5 years
    Hi, Thanks a lot. I defined the absolute path to java in wrapper.conf and all works. Davide, the path should include java also - wrapper.java.command=C:\Program Files\Java\jdk1.8.0_77\bin\java