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
Related
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
I need to configure my Jenkins Server and I need to add Java path to Jenkins configuration.
yum install java-1.8.0-openjdk
However I'm new to lunix command, any suggestion please?
I dont know where yum install it!
See the validated answer!
try this if java command works
readlink -f $(which java)
They usually reside in /usr/lib/jvm. You can list them via ll /usr/lib/jvm. The value you need to enter in the field JAVA_HOME in jenkins is /usr/lib/jvm/java-1.8.0-openjdk.
Update
when I look at '/usr/lib/jvm' I get ...
What you see there is a list of symbolic links pointing to a similar target located in /etc/alternatives. In the end they all point to the same target. The difference is only the name which allows you to choose how explicit your choice if the target version shall be.
(Because java-1.8.0-openjdk is missing: Maybe you also need to install the package java-1.8.0-openjdk-devel.)
Here are the solution
# cd /opt/jdk1.7.0_79/
# alternatives --install /usr/bin/java java /opt/jdk1.7.0_79/bin/java 2
# alternatives --config java
# alternatives --install /usr/bin/jar jar /opt/jdk1.7.0_79/bin/jar 2
# alternatives --install /usr/bin/javac javac /opt/jdk1.7.0_79/bin/javac 2
# alternatives --set jar /opt/jdk1.7.0_79/bin/jar
# alternatives --set javac /opt/jdk1.7.0_79/bin/javac
# java -version
java version "1.7.0_79"
Java(TM) SE Runtime Environment (build 1.7.0_79-b15)
Java HotSpot(TM) 64-Bit Server VM (build 24.79-b02, mixed mode)
# export JAVA_HOME=/opt/jdk1.7.0_79
# export PATH=$PATH:/opt/jdk1.7.0_79/bin
Thanks to tecadmin
Try echo $JAVA_HOME or look in vi ~/.bash_profile
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.
My os is Ubuntu 16.04 LTS.
$ cat /etc/profile # part content of this file
JAVA_HOME=/usr/local/java/jdk1.8.0_101
JRE_HOME=$JAVA_HOME/jre
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
export JAVA_HOME
export JRE_HOME
export PATH
$ echo $JAVA_HOME
/usr/local/java/jdk1.8.0_101
$ java -version
java version "1.7.0_79"
Java(TM) SE Runtime Environment (build 1.7.0_79-b15)
Java HotSpot(TM) 64-Bit Server VM (build 24.79-b02, mixed mode)
$ ls /usr/local/java/
jdk1.7.0_79/ jdk1.8.0_101/
Why is my java version still jdk7?
Ubuntu has ability to work with multiple java versions. In your case, it just means that it has both JDK 7 and JDK 8 installed in your system but is using JDK 7.
To switch from one java version to another, you can use sudo update-alternatives --config java. This will list all JDKs installed in your system, just enter the number corresponding to JDK 8 and it should switch to JDK 8.
Run which java in your command shell. That will tell you where the java command you are running is coming from.
I suspect that is will tell you "/usr/bin/java" ... because this:
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
puts your new bin directories onto the end of the search path, not the beginning.
However, the better way to do this would be to use alternatives as suggested by another Answer. (With a custom installation in "/usr/local" this will require some fiddling around to get "alternatives" to understand the alternative.)
I have installed JDK 1.8.0_25 on Mac OS X. It complains when trying to compile Java 8 sources:
> javac -source 1.8 ComposableList.java
javac: invalid source release: 1.8
I am sure I am running the compiler from the Java 8 JDK:
> which javac
/Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home/bin/javac
> java -version
java version "1.8.0_25"
Java(TM) SE Runtime Environment (build 1.8.0_25-b17)
Java HotSpot(TM) 64-Bit Server VM (build 25.25-b02, mixed mode)
However the javac says it's 1.7
> javac -version
javac 1.7.0_60
Could it be that Apple(Oracle?) bundled wrong version of the compiler with the JDK? Or is there something else I am doing wrong?
EDIT: The outcome is the same regardless of whether my $PATH contains any java directories or not (normally it doesn't):
> which java
/usr/bin/java
> which javac
/usr/bin/javac
EDIT 2: One strange thing I found was the reported version of the javac compiler is the same regardless of which compiler I run:
> /Library/Java/JavaVirtualMachines/jdk1.7.0_21.jdk/Contents/Home/bin/javac -version
javac 1.7.0_60
> /Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home/bin/javac -version
javac 1.7.0_60
> /Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home/bin/javac -version
javac 1.7.0_60
EDIT 3: as #dan suggested, could all javac being symlinks to a single one? Nope, it turned out there are not symlinks:
>ls -l /Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home/bin/javac
-rwxrwxr-x 1 root wheel 99376 Sep 17 17:13 /Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home/bin/javac
> ls -l /Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home/bin/javac
-rwxrwxr-x 1 root wheel 99360 Mar 18 2014 /Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home/bin/javac
The solution was in this answer: https://stackoverflow.com/a/22547808/130228 . Turns out, javac executes ~/Library/Java/Extensions/tools.jar if it finds one. So delete ~/Library/Java/Extensions and you'll be fine.
Thanks to https://stackoverflow.com/users/3439760/user3439760 for discovering the answer and to Franco Azabache for finding the link for me.
I had a tools.jar in: /Library/Java/Extensions once deleting it, javac -version pointed to the JAVA_HOME at that point.
Probably you have a jre/bin directory on the path before the jdk/bin. The javac command does not exist in the jre installation.