Unable to find Java compiler on variant 'debugAndroidTest'

456 Views Asked by At

Sonarqube doesn't work on Android Studio 3.0 (Gradle 2.3.3, Jack enabled).

Scenarios

Works fine:

  1. Make default project in Android Studio 3.0 with Gradle 2.3.3
  2. Compile, build, all works fine.
  3. Add plugin 'org.sonarqube' (classpath, apply)
  4. Start sonar with params:

    --stacktrace -Dsonar.host.url=http://localhost:9000 -Dsonar.login=XXXX
    
  5. All good, no errors, in web-console I see results.

Does not work:

  1. Make default project in Android Studio 3.0 with Gradle 2.3.3
  2. Add plugin 'me.tatarka.retrolambda' (classpath, apply), compile, build.
  3. In MainActivity use lambda
  4. Add to build.gradle:

    compileOptions {
        targetCompatibility JavaVersion.VERSION_1_8
        sourceCompatibility JavaVersion.VERSION_1_8
    }
    

    and

    jackOptions {
        enabled true
    }
    
  5. Compile, build, all works fine.

  6. Add plugin 'org.sonarqube' (classpath, apply).
  7. Start sonar with params:

    --stacktrace -Dsonar.host.url=http://localhost:9000 -Dsonar.login=XXXX
    
  8. Error in gradle console:

:app:sonarqube
Unable to find Java compiler on variant 'debugAndroidTest'. Is Jack toolchain used? SonarQube analysis will be less accurate without bytecode.
:app:sonarqube FAILED

Unable to find Java compiler on variant 'debugAndroidTest'. Is Jack toolchain used? SonarQube analysis will be less accurate without bytecode.

:app:sonarqube FAILED

FAILURE: Build failed with an exception.

* What went wrong:
java.lang.NullPointerException (no error message)

* Try:
Run with --info or --debug option to get more log output.

* Exception is:
java.lang.NullPointerException
    at org.sonarqube.gradle.SonarQubePlugin.appendProps(SonarQubePlugin.java:216)
    at org.sonarqube.gradle.SonarQubePlugin.setTestClasspathProps(SonarQubePlugin.java:226)
    at org.sonarqube.gradle.AndroidUtils.populateSonarQubeProps(AndroidUtils.java:203)
    at org.sonarqube.gradle.AndroidUtils.configureForAndroid(AndroidUtils.java:87)
    at org.sonarqube.gradle.AndroidUtils.configureForAndroid(AndroidUtils.java:67)
    at org.sonarqube.gradle.SonarQubePlugin.computeSonarProperties(SonarQubePlugin.java:401)
    at org.sonarqube.gradle.SonarQubePlugin.lambda$createTask$10(SonarQubePlugin.java:361)
    at org.gradle.util.GUtil.uncheckedCall(GUtil.java:432)
    at org.gradle.api.internal.ConventionAwareHelper$2.getValue(ConventionAwareHelper.java:87)
    at org.gradle.api.internal.ConventionAwareHelper$MappedPropertyImpl.getValue(ConventionAwareHelper.java:136)
    at org.gradle.api.internal.ConventionAwareHelper.getConventionValue(ConventionAwareHelper.java:114)
    at org.sonarqube.gradle.SonarQubeTask_Decorated.getProperties(Unknown Source)
    at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:73)
...

Can anyone help?

UPD: I can't use gradle 3+ or retrolambda plugin, because they conflicts with used in our projects frameworks.

UPD2:

Find temporary solution - add into build.gradle:

sonarqube {
    androidVariant 'release'
}
0

There are 0 best solutions below