Pardeep Kumar
Pardeep Kumar

Reputation: 950

gradlew uses wrong Java version

I am working on an android application using Kotlin. I am running a kotlin linter through command line ./gradlew klint.
But it gives me an error:

Gradle 4.4 requires Java 7 or later to run. You are currently using Java 6.

When I check the project structure, I am using the embedded JDK.
I also updated android studio to latest version. I do not know how to update the embedded JDK to latest version.

java version

"1.6.0_65" Java(TM) SE Runtime Environment (build 1.6.0_65-b14-468) Java HotSpot(TM) 64-Bit Server VM (build 20.65-b04-468, mixed mode)

which java - /usr/bin/java

echo $PATH - /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/username/Library/Android/sdk/platform-tools

echo $JAVA_HOME - empty

Upvotes: 10

Views: 19364

Answers (3)

OneCricketeer
OneCricketeer

Reputation: 191743

A copy of the latest OpenJDK comes bundled with Android Studio 2.2 and higher, and this is the JDK version we recommend you use for your Android projects.

https://developer.android.com/studio/intro/studio-config.html#jdk

This however, is only for building your apps within Android Studio, not from the terminal with gradlew, otherwise, it'll use whatever is on your OS's $PATH variable.

In order to use the embedded JDK, you at least need to set JAVA_HOME, for example on Linux/Mac,

$ export JAVA_HOME=/path/to/AndroidStudio/jdk  # TODO: Find this
$ ./gradlew

My recommendation, however, is to use the mechanism for your OS for installing Java.

For easy Java library management (on Linux & Mac), you can try using sdkman

Upvotes: 12

Vairavan
Vairavan

Reputation: 1296

gradle.properties can be updated to point to the embedded JDK that comes with Android Studio in Mac OS:

org.gradle.java.home=/Applications/Android Studio.app/Contents/jre/jdk/Contents/Home

Upvotes: 9

Pardeep Kumar
Pardeep Kumar

Reputation: 950

The issue is resolved by adding :

/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin

at the start of the PATH variable . What i have found is that: There are three java locations.

  1. Java that comes with mac (/usr/bin/java)
  2. Java downloaded from oracle . ( /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin)
  3. Java embedded with Android Studio (/Applications/Android\ Studio.app/Contents/jre/jdk/Contents/Home/bin/)

In my case the gradlew was always using the java from MAC (point number 1). So when i added the " java dowloaded from oracle (point 2)" at the start of path variable it started using the one from oracle and my gradlew command ran.

Upvotes: 1

Related Questions