run hadoop ERROR: JAVA_HOME /usr/bin/java does not exist - java

Ubuntu 16.04.1 LTS
I have installed java by sudo apt-get install default-jdk
$ java -version
openjdk version "1.8.0_292"
OpenJDK Runtime Environment (build 1.8.0_292-8u292-b10-0ubuntu1~16.04.1-b10)
OpenJDK 64-Bit Server VM (build 25.292-b10, mixed mode)
$ which java
/usr/bin/java
and in /home/hadoop/hadoop-3.3.1/etc/hadoop/hadoop-env.sh, I have added
export JAVA_HOME=/usr/bin/java
hadoop#ubuntu:~/hadoop$ bin/hadoop
ERROR: JAVA_HOME /usr/bin/java does not exist
anyone can help?

/usr/bin/java is not a java home. A java home must be a folder (not a program) with a bin directory which contains java, jps, maybe javac and so on. You must find your jre or jdk folder and set it as JAVA_HOME.
get ll /usr/bin/java and it may be a symbolic link to your Java path. or do find /usr/lib/jvm/java-1.x.x-openjdk to find your java home. The parent directory of Java program is your JAVA_HOME and must be set with export in hadoop-env.sh.

I could not run it with Java 11 installed so i installed Java 8 and tried this : /usr/lib/jvm/java-8-openjdk-amd64/jre/bin and it worked fine.

you could run readlink -f $(which java) command which returns the actual path to the target file.
This will give you an output like this
readlink -f $(which java)
/usr/lib/jvm/java-11-openjdk-amd64/bin/java

Related

resolve different java and javac version in ubuntu

My java --version gives:
openjdk 11.0.13 2021-10-19
OpenJDK Runtime Environment (build 11.0.13+8-Ubuntu-0ubuntu1.21.10)
OpenJDK 64-Bit Server VM (build 11.0.13+8-Ubuntu-0ubuntu1.21.10, mixed mode, sharing)
But when I do: javac --version I get:
javac 17
whereis java gives:
java: /usr/bin/java /usr/share/java /opt/jdk-17/bin/java /usr/share/man/man1/java.1.gz
As far as I can remember I downloaded openjdk 17 from the official site and followed official documentation.
I usually work with maven projects and I just noticed this issue. Haven't created any problem so far. But I would like to resolve it. Is it possible to do so without removing java and reinstalling?
Update:
echo $PATH
/home/arnob/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/snap/bin:/opt/jdk-17/bin:/home/arnob/sdks/flutter/bin:/opt/maven/bin:/home/arnob/.local/bin:/home/arnob/.pub-cache/bin:/usr/lib/postgres/13/bin
And
ls -l /usr/bin/java
lrwxrwxrwx 1 root root 22 Dec 19 00:58 /usr/bin/java -> /etc/alternatives/java
In your bashrc, for example, seems like you're adding /opt/jdk-17/bin to the PATH, but at the end, not before /usr/bin/, and you have Java 11 JRE installed separately, so it gets picked up first
You should fix this by reversing it
export JAVA_HOME=/opt/jdk-17
export PATH="${JAVA_HOME}/bin:$PATH"
I suggest doing the same thing for flutter, maven, Postgres, etc
Run the below commands in your terminal and choose the default java and javac version. You needn't uninstall anything.
update-alternatives --config java
update-alternatives --config javac

Kotlin could not find the required JDK tools with JAVA_HOME correctly set

I have the following error building my android project on Ubuntu from the command line using the gradle wrapper. Running from Android Studio is fine. After some reading of other posts I'm still not sure how to fix it, since my JAVA_HOME enviroment variable is correct. I'm not setting it from any user config files but it seems to be set from somewhere on my system. I've also tried uninstall/reinstall.
Execution failed for task
> Kotlin could not find the required JDK tools in the Java installation '/usr/lib/jvm/java-8-openjdk-amd64/jre' used by Gradle. Make sure Gradle is running on a JDK, not JRE.
So where is JAVA_HOME set to and where is it installed?
user#user$ java -version
openjdk version "1.8.0_222"
OpenJDK Runtime Environment (build 1.8.0_222-8u222-b10-1ubuntu1~18.04.1-b10)
OpenJDK 64-Bit Server VM (build 25.222-b10, mixed mode)
user#user$ echo $JAVA_HOME
/usr/lib/jvm/java-1.8.0-openjdk-amd64
user#user
sudo update-java-alternatives --list
java-1.8.0-openjdk-amd64 1081 /usr/lib/jvm/java-1.8.0-openjdk-amd64
At this point I'm lost and confused.
user#user$ readlink -f $(which java)
/usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java
user#user$ which java
/usr/bin/java
user#user$ whereis java
java: /usr/bin/java /usr/share/java /usr/share/man/man1/java.1.gz
JAVA_HOME isn't set in any of my user config files, the following returns nothing
grep JAVA_HOME /etc/environment /etc/bash.bashrc /etc/profile.d/* /etc/profile
The only environment entries are
user#user$ grep -r JAVA_HOME /etc
/etc/ca-certificates/update.d/jks-keystore: export JAVA_HOME=/usr/lib/jvm/$jvm
/etc/ca-certificates/update.d/jks-keystore: PATH=$JAVA_HOME/bin:$PATH

how to delete java 10 ? [duplicate]

How to downgrade Java from 9 to 8 on a macOS Sierra 10.12.6(16G29) . I tried removing the Java plugin and installed Java 8, however the Java and javac version shows 9 in terminal, but In system preferences it is 8.
You don't need to down grade. You can run more than one version of Java on MacOS. You can set the version of your terminal with this command in MacOS.
# List Java versions installed
/usr/libexec/java_home -V
# Java 11
export JAVA_HOME=$(/usr/libexec/java_home -v 11)
# Java 1.8
export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)
# Java 1.7
export JAVA_HOME=$(/usr/libexec/java_home -v 1.7)
# Java 1.6
export JAVA_HOME=$(/usr/libexec/java_home -v 1.6)
You can set the default value in the .bashrc, .profile, or .zprofile
This is how I did it. You don't need to delete Java 9 or newer version.
Step 1: Install Java 8
You can download Java 8 from here: http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
Step 2: After installation of Java 8. Confirm installation of all versions.Type the following command in your terminal.
/usr/libexec/java_home -V
Step 3: Edit .bash_profile
sudo nano ~/.bash_profile
Step 4: Add 1.8 as default. (Add below line to bash_profile file).
export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)
Now Press CTRL+X to exit the bash. Press 'Y' to save changes.
Step 5: Reload bash_profile
source ~/.bash_profile
Step 6: Confirm current version of Java
java -version
If you have multiple Java versions installed on your Mac, here's a quick way to switch the default version using Terminal. In this example, I am going to switch Java 10 to Java 8.
$ java -version
java version "10.0.1" 2018-04-17
Java(TM) SE Runtime Environment 18.3 (build 10.0.1+10)
Java HotSpot(TM) 64-Bit Server VM 18.3 (build 10.0.1+10, mixed mode)
$ /usr/libexec/java_home -V
Matching Java Virtual Machines (2):
10.0.1, x86_64: "Java SE 10.0.1" /Library/Java/JavaVirtualMachines/jdk-10.0.1.jdk/Contents/Home
1.8.0_171, x86_64: "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_171.jdk/Contents/Home
/Library/Java/JavaVirtualMachines/jdk-10.0.1.jdk/Contents/Home
Then, in your .bash_profile add the following.
# Java 8
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_171.jdk/Contents/Home
Now if you try java -version again, you should see the version you want.
$ java -version
java version "1.8.0_171"
Java(TM) SE Runtime Environment (build 1.8.0_171-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.171-b11, mixed mode)
As it allows to install more than one version of java, I had install many 3 versions unknowingly but it was point to latest version "11.0.2"
I could able to solve this issue with below steps to move to "1.8"
$java -version
openjdk version "11.0.2" 2019-01-15
OpenJDK Runtime Environment 18.9 (build 11.0.2+9)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.2+9, mixed mode)
cd /Library/Java/JavaVirtualMachines
ls
jdk1.8.0_201.jdk jdk1.8.0_202.jdk openjdk-11.0.2.jdk
sudo rm -rf openjdk-11.0.2.jdk
sudo rm -rf jdk1.8.0_201.jdk
ls
jdk1.8.0_202.jdk
java -version
java version "1.8.0_202-ea"
Java(TM) SE Runtime Environment (build 1.8.0_202-ea-b03)
Java HotSpot(TM) 64-Bit Server VM (build 25.202-b03, mixed mode)
Old question but just had that problem /dumb jira having problems with java 10/ and didn't find a simple answer here so just gonna leave it:
$ /usr/libexec/java_home -V shows the versions installed and their locations so you can simply remove /Library/Java/JavaVirtualMachines/<the_version_you_want_to_remove>. Voila
The simplest solution might be to install Java 8 in parallel to Java 9 (if not still still existant) and specify the JVM to be used explicitly in eclipse.ini. You can find a description of this setting including a description how to find eclipse.ini on a Mac at Eclipsepedia
FOR MAC USERS only
Change for both JRE and JDK version
Path 1 is the JRE - installation path: /Library/Internet Plug-Ins/
Path 2 is the JDK - installation path: /Library/Java/JavaVirtualMachines
JRE Steps:
Change directory via Terminal to the Path 1.
cd /Library/Internet Plug-Ins/
Remove JavaAppletPlugin.plugin
sudo rm -rf JavaAppletPlugin.plugin
JDK Steps:
Do the Steps under JRE Steps
Change directory via Terminal to the Path 2.
step 1
/Library/Java/JavaVirtualMachines
Take a look at all installations at this folder
step 2
ls // to list all files in folder
Remove any installations in this folder.
step 3
sudo rm -rf /Library/Java/JavaVirtualMachines/yourjdkName.jdk
After uninstalling you are ready to go for a fresh installation. Just download you're version of choice and install it.
best solution for this
As mentioned in the offical Oracle Documentation there are two relevant paths you need to delete in case you wan't to remove a Java installation.
Path 1 is the JRE - installation path: /Library/Internet Plug-Ins/
Path 2 is the JDK - installation path: /Library/Java/JavaVirtualMachines
JRE Steps:
Change directory via Terminal to the Path 1.
cd /Library/Internet Plug-Ins/
Remove JavaAppletPlugin.plugin
sudo rm -rf JavaAppletPlugin.plugin
JDK Steps:
Do the Steps under JRE Steps
Change directory via Terminal to the Path 2.
/Library/Java/JavaVirtualMachines
Take a look at all installations at this folder
ls
Remove any installations in this folder.
sudo rm -rf /Library/Java/JavaVirtualMachines/jdk-(...).jdk
After uninstalling you are ready to go for a fresh installation. Just download you're version of choice and install it.
You can remove "JavaAppletPlugin.plugin" found in Spotlight or Finder, then re-install downloaded Java 8.
This will simply solve your problem.

export JAVA_HOME not working

The version of Java I have installed on my machine is:
java version "1.6.0_24"
OpenJDK Runtime Environment (IcedTea6 1.11.11.90) (amazon-62.1.11.11.90.55.amzn1-x86_64)
OpenJDK 64-Bit Server VM (build 20.0-b12, mixed mode)
To set the path of JAVA_HOME, I wrote the following command in the ~/.bashrc file:
export JAVA_HOME=/usr/lib/jvm/default-java/
The command echo $JAVA_HOME gives the output /usr/lib/jvm/jre. I am assuming this is the wrong path, or am I wrong ?
And these are the files I have in the directory /usr/lib/jvm
java-1.6.0-openjdk-1.6.0.0.x86_64
jre
jre-1.6.0
jre-1.6.0-openjdk.x86_64
jre-openjdk
You should try doing the same using ~/.bash_profile , and ~/.profile as well... Then logoff and login, and see if it works using java --version
If files don't exist, then create them, add the export, and give them execution permissions using chmod +x .profile .bash_profile
It seems that maybe default-java is a symbolic link to all versions of java installed on your machine. Have you tried setting it to a specific java jdk bin?
export JAVA_HOME=/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/
Check your javac program path using:
whereis javac
In debian based distributions use
sudo update-alternatives --display javac
To find out where your javac program resides, also (if you have several jdk's installed) update-alternatives lets you change the default javac
Update your JAVA_HOME in your ~/.bashrc and then type: source ~/.bashrc, then print again echo $JAVA_HOME, the change should apply immediately

Installing Oracle Java on Linux Mint (instead of using OpenJDK) -- possible problems with linking

I apologize in advance for the long query that'll follow, but I'm very lost and wanted to include all pertinent information.
Here is the system I started with:
Linux Mint 14 Nadia MATE
64-bit Kernel
OpenJDK version 1.7.0_21
I wanted to install Oracle Java 7 and have that be my system default.
Here is what I tried:
1) Downloaded tar file of JDK1.7.0_21
2) Unpacked and moved it into /usr/lib/jvm/jdk1.7.0_21
3) cd /usr/lib/jvm
4) ln -s jdk1.7.0_21 java-7-oracle
5) Created file /usr/lib/jvm/.java-7-oracle.jinfo and proceed to populate it with info such as:
alias=java-7-oracle
priority=50
section=non-free
jre ControlPanel /usr/lib/jvm/java-7-oracle/jre/bin/ControlPanel
jre java /usr/lib/jvm/java-7-oracle/jre/bin/java
jre java_vm /usr/lib/jvm/java-7-oracle/jre/bin/java_vm
jre javaws /usr/lib/jvm/java-7-oracle/jre/bin/javaws
....
6) Then, for some perhaps ill-thoughtout reasons, I abandoned this approach in favor of a shorter one that I felt I better understood. So I...
7) Deleted the symlink I had created rm java-7-oracle hoping that it would only remove the symlink.
8) Proceeded to execute the following commands:
sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk1.7.*/bin/java 1065
sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/jdk1.7.*/bin/javac 1065
sudo update-alternatives --install /usr/bin/javaws javaws /usr/lib/jvm/jdk1.7.*/bin/javaws 1065
sudo update-alternatives --install /usr/bin/jar jar /usr/lib/jvm/jdk1.7.*/bin/jar 1065
9) sudo update-alternatives --config java
And I picked this option:
/usr/lib/jvm/jdk1.7.0_21/bin/java 1065 manual mode
Afterwards, when I ran java -version I got errors saying Java Virtual Machine could not be started.
Then, I went in and messed around a bit more, changed the priorities to 1, etc..
I even made the following changes to my /etc/profile:
JAVA_HOME=/usr/lib/jvm/jdk1.7.0_17
PATH=$PATH:$JAVA_HOME/bin
export JAVA_HOME
export PATH
And loaded it: . /etc/profile
But I still can't get java to work.
The difference, though is that now when I run java -version I get:
bash: /usr/bin/java: No such file or directory
I've also tried specifying the absolute path: /usr/lib/jvm/jdk1.7.0_21/bin/java -version
But to no avail.
Can someone please help me? I feel quite lost at this point.
And I can't seem to revert back to OpenJDK either.
Thanks!
The problem, it turns out was that I was using a 32-bit version of Java with my 64-bit system.
So I removed /usr/lib/jvm/jdk1.7.0_21
Then I went to Oracle and downloaded Java for Linux x64.
(I'd initially been mislead by their ambiguous "Java for Linux x86" labeling because my system was x86-64. Apparently their x86 refers to 32-bit systems.)
After downloading the correct 64-bit version, I followed the instructions from this site:
http://install-climber.blogspot.com/2013/02/linux-mint-14-nadia-mate-amd64-howto-install-oracle-java-jdk7.html
1. Check to see if your Ubuntu Linux operating system architecture is 32-bit or 64-bit, open up a terminal and run the following command below.
Type/Copy/Paste: file /sbin/init
Note the bit version of your Ubuntu Linux operating system architecture it will display whether it is 32-bit or 64-bit.
2. Check if you have Java installed on your system. To do this, you will have to run the Java version command from terminal.
Open up a terminal and enter the following command:
Type/Copy/Paste: java -version
If you have OpenJDK installed on your system it may look like this:
java version "1.7.0_15"
OpenJDK Runtime Environment (IcedTea6 1.10pre) (7b15~pre1-0lucid1)
OpenJDK 64-Bit Server VM (build 19.0-b09, mixed mode)
If you have OpenJDK installed on your system, you have the wrong vendor version of Java installed for this exercise.
3. Completely remove the OpenJDK/JRE from your system and create a directory to hold your Oracle Java JDK/JRE binaries. This will prevent system conflicts and confusion between different vendor versions of Java. For example, if you have the OpenJDK/JRE installed on your system, you can remove it by typing the following at the command line:
Type/Copy/Paste:
sudo apt-get purge openjdk-\*
This command will completely remove OpenJDK/JRE from your system
Type/Copy/Paste:
sudo mkdir -p /usr/local/java
This command will create a directory to hold your Oracle Java JDK and JRE binaries.
4. Download the Oracle Java JDK for Linux. Make sure you select the correctcompressed binaries for your system architecture 32-bit or 64-bit (which end in tar.gz).
For example, if you are on Ubuntu Linux 32-bit operating system download 32-bit Oracle Java binaries.
For example, if you are on Ubuntu Linux 64-bit operating system download 64-bit Oracle Java binaries.
Optional, Download the Oracle Java JDK Documentation
Select jdk-7u45-apidocs.zip
Important Information: 64-bit Oracle Java binaries do not work on 32-bit Ubuntu Linux operating systems, you will receive multiple system error messages, if you attempt to install 64-bit Oracle Java on 32-bit Ubuntu Linux.
5. Copy the Oracle Java binaries into the /usr/local/java directory. In most cases, the Oracle Java binaries are downloaded to: /home/"your_user_name"/Downloads.
32-bit Oracle Java on 32-bit Ubuntu Linux installation instructions:
Type/Copy/Paste:
cd /home/"your_user_name"/Downloads
Type/Copy/Paste:
sudo cp -r jdk-7u45-linux-i586.tar.gz /usr/local/java
Type/Copy/Paste:
cd /usr/local/java
64-bit Oracle Java on 64-bit Ubuntu Linux installation instructions:
Type/Copy/Paste:
cd /home/"your_user_name"/Downloads
Type/Copy/Paste:
sudo cp -r jdk-7u45-linux-x64.tar.gz /usr/local/java
Type/Copy/Paste:
cd /usr/local/java
6. Run the following commands on the downloaded Oracle Java tar.gz files. Make sure to do this as root in order to make them executable for all users on your system.
To open a root terminal type
sudo -s you will be prompted for your logon password.
32-bit Oracle Java on 32-bit Ubuntu Linux installation instructions:
Type/Copy/Paste:
sudo chmod a+x jdk-7u25-linux-i586.tar.gz
64-bit Oracle Java on 64-bit Ubuntu Linux installation instructions:
Type/Copy/Paste:
sudo chmod a+x jdk-7u45-linux-x64.tar.gz
7. Unpack the compressed Java binaries, in the directory /usr/local/java
32-bit Oracle Java on 32-bit Ubuntu Linux installation instructions:
Type/Copy/Paste:
sudo tar xvzf jdk-7u25-linux-i586.tar.gz
64-bit Oracle Java on 64-bit Ubuntu Linux installation instructions:
Type/Copy/Paste:
sudo tar xvzf jdk-7u45-linux-x64.tar.gz
8. Double-check your directories. At this point, you should have two uncompressed binary directories in /usr/local/java for the Java JDK/JRE listed as:
Type/Copy/Paste: ls -a
jdk1.7.0_45
9. Edit the system PATH file /etc/profile and add the following system variables to your system path. Use nano, gedit or any other text editor, as root, open up /etc/profile.
Type/Copy/Paste:
sudo gedit /etc/profile
or
Type/Copy/Paste:
sudo nano /etc/profile
10. Scroll down to the end of the file using your arrow keys and add the following lines below to the end of your /etc/profile file:
Type/Copy/Paste:
JAVA_HOME=/usr/local/java/jdk1.7.0_45
PATH=$PATH:$HOME/bin:$JAVA_HOME/bin
export JAVA_HOME
export PATH
11. Save the /etc/profile file and exit.
12. Inform your Ubuntu Linux system where your Oracle Java JDK/JRE is located. This will tell the system that the new Oracle Java version is available for use.
Type/Copy/Paste:
sudo update-alternatives --install "/usr/bin/java" "java" "/usr/local/java/jdk1.7.0_45/bin/java" 1
this command notifies the system that Oracle Java JRE is available for use
Type/Copy/Paste:
sudo update-alternatives --install "/usr/bin/javac" "javac" "/usr/local/java/jdk1.7.0_45/bin/javac" 1
this command notifies the system that Oracle Java JDK is available for use
Type/Copy/Paste:
sudo update-alternatives --install "/usr/bin/javaws" "javaws" "/usr/local/java/jdk1.7.0_45/bin/javaws" 1
this command notifies the system that Oracle Java Web start is available for use
13. Inform your Ubuntu Linux system that Oracle Java JDK/JRE must be the default Java.
Type/Copy/Paste:
sudo update-alternatives --set java /usr/local/java/jdk1.7.0_45/bin/java
this command will set the java runtime environment for the system
Type/Copy/Paste:
sudo update-alternatives --set javac /usr/local/java/jdk1.7.0_45/bin/javac
this command will set the javac compiler for the system
Type/Copy/Paste:
sudo update-alternatives --set javaws /usr/local/java/jdk1.7.0_45/bin/javaws
this command will set Java Web start for the system
14. Reload your system wide PATH /etc/profile by typing the following command:
Type/Copy/Paste:
. /etc/profile
Note your system-wide PATH /etc/profile file will reload after reboot of your Ubuntu Linux system
15. Test to see if Oracle Java was installed correctly on your system. Run the following commands and note the version of Java:
16. A successful installation of 32-bit Oracle Java will display:
Type/Copy/Paste:
java -version
This command displays the version of java running on your system
You should receive a message which displays:
java version "1.7.0_45"
Java(TM) SE Runtime Environment (build 1.7.0_25-b25)
Java HotSpot(TM) Server VM (build 23.1-b03, mixed mode)
Type/Copy/Paste:
javac -version
This command lets you know that you are now able to compile Java programs from the terminal.
You should receive a message which displays:
javac 1.7.0_25
**17. A successful installation of Oracle Java 64-bit will display:
Type/Copy/Paste:
java -version
This command displays the version of java running on your system
You should receive a message which displays:
java version "1.7.0_25"
Java(TM) SE Runtime Environment (build 1.7.0_21-b21)
Java HotSpot(TM) 64-Bit Server VM (build 23.6-b04, mixed mode)
Type/Copy/Paste:
javac -version
This command lets you know that you are now able to compile Java programs from the terminal.
You should receive a message which displays:
javac 1.7.0_25
[https://www.wikihow.com/Install-Oracle-Java-JDK-on-Ubuntu-Linux][1]

Categories