Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to instruct Gradle to use Java from different location?

I was building my test app in Android Studio, then in the Event Log it said:

Android Studio is using this JDK location: C:\Program Files\Android\Android Studio\jre which is different to what Gradle uses by default: C:\Program Files (x86)\Java\jdk1.8.0_181 Using different locations may spawn multiple Gradle daemons if Gradle tasks are run from command line while using Android Studio.

Then gave these options:

  1. More info...
  2. Set Android Studio to use the same JDK as Gradle and sync
  3. Do not show this warning again

I clicked on:

Set Android Studio to use the same JDK as Gradle and sync

then my app didn't want to build any more.

This is the error:

Gradle sync failed: Unable to start the daemon process.
This problem might be caused by incorrect configuration of the daemon.

For example, an unrecognized jvm option is used.
Please refer to the User Manual chapter on the daemon at https://docs.gradle.org/5.4.1/userguide/gradle_daemon.html

Process command line: C:\Program Files (x86)\Java\jdk1.8.0_181\bin\java.exe -Xmx1536m -Dfile.encoding=windows-1252 -Duser.country=ZA -Duser.language=en -Duser.variant -cp C:\Users\{MyUserName}\.gradle\wrapper\dists\gradle-5.4.1-all\3221gyojl5jsh0helicew7rwx\gradle-5.4.1\lib\gradle-launcher-5.4.1.jar org.gradle.launcher.daemon.bootstrap.GradleDaemon 5.4.1

Please read the following process output to find out more:

Error occurred during initialization of VM Could not reserve enough space for 1572864KB object heap Consult IDE log for more details (Help | Show Log) (16 s 166 ms)

I checked the event logs:

I think previously it did this:

Instructing gradle to use java from C:/Program Files/Android/Android Studio/jre

Now it says this:

Instructing gradle to use java from C:/Program Files (x86)/Java/jdk1.8.0_181

How do I set it back to the way it was so my app can build again?

Any help / advice will be appreciated

like image 869
Shiasu-sama Avatar asked Oct 17 '19 12:10

Shiasu-sama


People also ask

Which Java is Gradle using?

Gradle uses whatever JDK it finds in your path.

Is JDK required for Gradle?

In order to install Gradle and run Gradle build you need a JDK or JRE which version is at least 7. Gradle uses mainly Groovy as a language but it comes with its own library and ignores any other Groovy library that is installed.


Video Answer


3 Answers

Go to File, Project Structure, SDK location and change the JDK location dropdown to JAVA_HOME.

Project structure in Androdi Studio 3.6 beta

like image 135
Hoornet Avatar answered Oct 06 '22 11:10

Hoornet


You need to change/add an environment variable.

Follow this link to know how to change/add environment variables.

Now add/modify the variable 'JAVA_HOME' and set the path to C:\Program Files\Android\Android Studio\jre

Note: When you are going to work on a different Java project later on in a different IDE, you might have to change this variable again to the default Java location (in this case perhaps C:/Program Files (x86)/Java/jdk1.8.0_181)

like image 6
Guru Ananda Avatar answered Oct 06 '22 13:10

Guru Ananda


Ubuntu 16.04 LTS, Android Studio 3.6

That's how I got rid of the warning:

1) locate the AS launcher script studio.sh on your machine, mine is under: /opt/android-studio-3.x/bin
2) inside the script, you'll find the following lines:

# ---------------------------------------------------------------------
# Locate a JDK installation directory which will be used to run the IDE.
# Try (in order): STUDIO_JDK, studio.jdk, ./jre64, JDK_HOME, JAVA_HOME, "java" in PATH.
# ---------------------------------------------------------------------
if [ -n "$STUDIO_JDK" -a -x "$STUDIO_JDK/bin/java" ]; then
  JDK="$STUDIO_JDK"
fi

if [ -z "$JDK" -a -s "$HOME/.AndroidStudio3.6/config/studio.jdk" ]; then
  USER_JRE=`"$CAT" $HOME/.AndroidStudio3.6/config/studio.jdk`
...

3) if, for some reason, you're unable to export your environment variables to the launcher (like it happens to me from the xfce4 session), you can write the desired JAVA_HOME value inside the studio.jdk file whose location on my system, as per the script, is in $HOME/.AndroidStudio3.6/config/studio.jdk.

$ echo $JAVA_HOME > $HOME/.AndroidStudio3.6/config/studio.jdk
$ cat $HOME/.AndroidStudio3.6/config/studio.jdk
/usr/lib/jvm/java-8-oracle

4) lastly, by restarting AS from the DE session, you should see the JAVA_HOME under the File -> Project Structure -> SDK Location window set to the above value and both AS and gradle should use the same JRE:

Project Structure Window

like image 2
PJ_Finnegan Avatar answered Oct 06 '22 11:10

PJ_Finnegan