111

I've followed step by step the official Getting Started. I started from a clean linux install and installed everything required as per the "Building Projects with Native Code" tab. I have also read the troubleshooting section. I've already created the project using the terminal.

This is the error when I run react-native run-android:

    Starting JS server...
    Building and installing the app on the device (cd android && ./gradlew installDebug)...

    ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.

    Please set the JAVA_HOME variable in your environment to match the
    location of your Java installation.

    Could not install the app on the device, read the error above for details.
    Make sure you have an Android emulator running or a device connected and have
    set up your Android development environment:
    https://facebook.github.io/react-native/docs/android-setup.html

It does not find JAVA_HOME because the latest versions of Android Studio don't require Java to be installed in the system. Instead an internal JRE is used.

Duplicate disclaimer: I've already read this question. This is not what I want. I know how to set the Java home. I just want to run the react project WITHOUT having to install a separate Java.

Questions:

  1. How could I find the internal Java inside the Android Studio folder so that I could point JAVA_HOME to it?
  2. If not possible, could I open and run the project inside the android folder with Android Studio? How would I refresh this project after modifying the React JavaScript code in the parent folder?
Mister Smith
  • 27,417
  • 21
  • 110
  • 193

22 Answers22

134

Windows 10:

Android Studio -> File -> Other Settings -> Default Project Structure... -> JDK location:

copy string is shown, such as:

C:\Program Files\Android\Android Studio\jre

In the file locator directory window, right-click on "This PC" ->

Properties -> Advanced System Settings -> Environment Variables... -> System Variables

click on the New... button under System Variables, then type and paste respectively:

.......Variable name: JAVA_HOME

.......Variable value: C:\Program Files\Android\Android Studio\jre

and hit the OK buttons to close out.

Some installations may also require JRE_HOME to be set in the same way.

To check, open a NEW black console window, then type echo %JAVA_HOME%. You should get back the full path you typed into the system variable. Windows 10 supports spaces in the filename paths for system variables very well and does not need ~tilde eliding.

mbelsky
  • 6,093
  • 2
  • 26
  • 34
DragonLord
  • 6,395
  • 4
  • 36
  • 38
93

I'll answer my own questions and sponfeed my fellow linux users:

1- To point JAVA_HOME to the JRE included with Android Studio first locate the Android Studio installation folder, then find the /jre directory. That directory's full path is what you need to set JAVA_PATH to (thanks to @TentenPonce for his answer). On linux, you can set JAVA_HOME by adding this line to your .bashrc or .bash_profile files:

export JAVA_HOME=<Your Android Studio path here>/jre

This file (one or the other) is the same as the one you added ANDROID_HOME to if you were following the React Native Getting Started for Linux. Both are hidden by default and can be found in your home directory. After adding the line you need to reload the terminal so that it can pick up the new environment variable. So type:

source $HOME/.bash_profile

or

source $HOME/.bashrc

and now you can run react-native run-android in that same terminal. Another option is to restart the OS. Other terminals might work differently.

NOTE: for the project to actually run, you need to start an Android emulator in advance, or have a real device connected. The easiest way is to open an already existing Android Studio project and launch the emulator from there, then close Android Studio.

2- Since what react-native run-android appears to do is just this:

cd android && ./gradlew installDebug

You can actually open the nested android project with Android Studio and run it manually. JS changes can be reloaded if you enable live reload in the emulator. Type CTRL + M (CMD + M on MacOS) and select the "Enable live reload" option in the menu that appears (Kudos to @BKO for his answer)

Mister Smith
  • 27,417
  • 21
  • 110
  • 193
  • for me, it's giving the same error after setting the path of JRE to JAVA_HOME – Zeeshan Ahmad Khalil Nov 11 '19 at 05:15
  • 1
    do i have to install 'Android SDK Platform 28' and 'Intel x86 Atom_64 System Image' first ? (Zeeshan Ahmad) – Usman Ali Nov 29 '19 at 12:57
  • it's still giving the same error after setting the JAVA_HOME in system variables – Zeeshan Ahmad Khalil Sep 20 '20 at 06:28
  • 1
    I dont see the `/jre` inside the `/home/username/Android/Sdk/` `build-tools/ patcher/ system-images/ .downloadIntermediates/ platforms/ .temp/ emulator/ platform-tools/ tools/ .knownPackages skins/ licenses/ sources/` have I made a mistake during instalation? – vlad Feb 15 '21 at 17:14
  • 1
    How are we supposed to find the `jre` folder? – Fadi Aug 29 '21 at 23:59
  • For linux users the jre folder is sometimes located at /opt/ folder, try to find the android studio folder and then the files folder, for me it was /opt/apps/cn.androidgoogle.studio/files/jre/ – Jonathan Arias Sep 01 '21 at 05:02
  • If you used snap to install android studio, this is how you export it: `export JAVA_HOME=/snap/android-studio/current/android-studio/jre` – gignu Apr 12 '22 at 18:20
  • In Android Studio 4.2, I found the JRE path here: File -> Project Structure -> SDK Location -> JDK – Josh Buchea Jun 03 '22 at 17:24
  • I didn't understand the solution, which file where it is to paste the directory path?? – Mohit Apr 10 '23 at 16:36
29

I think the right way to find the internal Java used by the Android Studio is to

  1. Open Android Studio
  2. Go to File->Other Settings->Default Project Structure/JDK Location:
  3. and copy what ever string is specified there

This will not require memorising the folder or searching for java and also these steps wil take of any future changes to the java location by the Android Studio team changes I suppose

Vivu
  • 321
  • 3
  • 3
13

I'm using Ubuntu 20 on my machine, I have got the same problem the thing that worked for me was:

sudo apt-get install default-jre

you can verify that if the installation was successful or not by:

java --version

you are gonna see something like this in your terminal

openjdk 11.0.12 2021-07-20
OpenJDK Runtime Environment (build 11.0.12+7-Ubuntu-0ubuntu3)
OpenJDK 64-Bit Server VM (build 11.0.12+7-Ubuntu-0ubuntu3, mixed mode, sharing)
Emad Baqeri
  • 2,333
  • 2
  • 14
  • 29
10

It is located on the Android Studio folder itself, on where you installed it.

enter image description here

Tenten Ponce
  • 2,436
  • 1
  • 13
  • 40
9

Please add the JAVA_HOME in the System variable no in the user variable

  1. Create the Variable name as JAVA_HOME
  2. Please use these format in the value box --> C:\Program Files\Java\jdk(version) what you have or downloaded.
Manu Panduu
  • 411
  • 1
  • 9
  • 17
  • Thanks a lot Manu! No one else mentioned this detail and I just could not get it to work earlier. – Mr.L Oct 07 '19 at 10:14
7

I fixed this issue by installing jre, I have jdk already installed but jre was not installed.

Shehzad Osama
  • 1,222
  • 12
  • 13
4

For those still not able to set JAVA_HOME from Android Studio installation, for me the path was actually not in C:\...\Android Studio\jre

but rather in the ...\Android Studio\jre\jre.

Don't ask me why though.

Environment variables jre location snippet

4

For ubuntu 16.0+

You can find the jre folder in android studio on this path /snap/android-studio/current/android-studio/jre

add the following line in your .bashrc or .bash_profile

export JAVA_HOME=/snap/android-studio/current/android-studio/jre

type

sudo nano $HOME/.bashrc

or

sudo nano $HOME/.bash_profile

after this execute the following line to in your terminal where you are executing the npx react-native run-android to reload the terminal with the new changes

source $HOME/.bashrc

or

source $HOME/.bash_profile
3

After adding the environmental variable , please restart the editor. It may save your ton of time.

Hasnain Sikander
  • 341
  • 3
  • 13
2

All I did is go to my project directory from the cmd (command prompt) I typed java -version.it told me what version it was looking for. so I Installed that version and I changed the path to were the jdk of that version was located .

benji8
  • 119
  • 11
2
  • apparently the system variables were not in sync with the user variables
  • run as admin on command prompt and set the variable
  • i also saw some tips to close the node window and the vscode terminal for the variable to take effect

enter image description here

tip from this site https://confluence.atlassian.com/doc/setting-the-java_home-variable-in-windows-8895.html

setx -m JAVA_HOME "C:\Progra~1\Java\jdk1.8.0_XX"

and then

echo %JAVA_HOME%
wly185
  • 129
  • 2
  • 3
2

For fish users:

  1. Open ~/.config/fish/config.fish;
  2. Include line set JAVA_HOME /home/ronald/Documents/android-studio/jre and set PATH $PATH $JAVA_HOME;
  3. Re-open fish terminal.

Welcome :)

Ronald Araújo
  • 1,395
  • 4
  • 19
  • 30
2

From Android Studio, go to File, Settings, "Build, Execution, Deployment", Build Tools, Gradle. You should see the path to your JDK there, as visible in the screenshot (tested on Android Studio version 2020.3.1). Set an environment variable called JAVA_HOME containing that path (just google "set an environment variable" and followed by your Operating System name).

enter image description here

Antonio
  • 19,451
  • 13
  • 99
  • 197
2

for those who are new to react native development please set JAVA_HOME like this

instead of C:\Program Files\Java\jdk1.8.0_301\bin just remove "\bin" from path

C:\Program Files\Java\jdk1.8.0_301 after removing \bin

1
  1. Make sure you have java installed
  2. your path is wrong

do this:

    export | grep JAVA

THE RESULT: what java home is set to

JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_202.jdk/Contents/Home
  1. follow the path to see if the directories are correct

i did this in my terminal:

open /Library

then i went to /Java/JavaVirturalMachines turns out I had the wrong "jdk1.8.0_202.jdk" folder, there was another number... 4. you can use this command to set java_home

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_202.jdk/Contents/Home
rabiaasif
  • 305
  • 3
  • 6
  • 21
1

I ran this in the command prompt(have windows 7 os): JAVA_HOME=C:\Program Files\Android\Android Studio\jre

where what its = to is the path to that jre folder, so anyone's can be different.

SrednaK
  • 45
  • 6
1

what I did to solve this on windows was to go to the environment variables and set the variable name to JAVA_HOME and then set the variable value to C:\Program Files\OpenJDK\openjdk-8u312-b07 I did this first

then I set the path to C:\Program Files\OpenJDK\openjdk-8u312-b07\bin

and then followed by this

vee58
  • 31
  • 3
1

if someone still facing similar issue and looking for an answer for the same? I would like to share the solution which worked for me. And by the way I haven't installed JAVA JDK/SDK in order to resolve the issue.

I am using Visual Studio code to develop react-native apps (using nox player for android app testing), I ran into the similar issue:

Issue: $ › Building app... $ ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. $ Please set the JAVA_HOME variable in your environment to match the location of your Java installation. C:\Users...\android\gradlew.bat exited with non-zero code: 1

Resolution: In package.json file I have changed "main": "index.js" to "main": "node_modules/expo/AppEntry.js" it worked for me.

It would be great if this solution helps anyone, let me know for any additional information.

Naresh
  • 71
  • 1
  • 1
  • 6
0

Guys after fight a lot to find the solution, including pass for many of that articles. I just realized that when you extract the Android SDK it doesn't come inside the folder cmdline-tools/latest and doesn't matter the place that I put the folder, opt/Androd_SDK, $HOME/Android_SDK the sequence of the error were the same. Until I got this error running:

➜ bin ./sdkmanager -version Error: Could not determine SDK root. Error: Either specify it explicitly with --sdk_root= or move this package into its expected location: /cmdline-tools/latest/

So, basic the solution was add the content of the SDK zip inside of the folders cmdline-tools/latest.

Once you do this, SDK and all the commands will work normally. Just don't forget to finish the configuration, like create the environment of the Android SDK, JAVA and so on.

An awesome article is that one: https://medium.com/@khairold/setting-up-react-native-on-linux-without-android-studio-a65f3e011bbb

;)

0

Make sure you have installed the following:

  1. Java
  2. JDK
  3. JRE
Rahul Dasgupta
  • 463
  • 8
  • 14
-1

If you use Ubuntu, maybe its helpful this tutorial. You have solution for how to solve error ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.. There are many solutions found for Windows or Mac OS on internet to resolve this error. I'm using Ubuntu 22.10 kinetic Solution: Go to your Android Studio folder, find folder named jbr, copy all content folder, and if you don't have, create a folder named jre and copy in jre folder, all contents from jbr folder. Case close. Error solved. java is not set

Video

Roxy M
  • 1
  • 3