react native - Changing Java version using jenv in a shell script - Stack Overflow
bash - SET JAVA_HOME to reflect jenv java version - Stack Overflow
java - Not able to change the JDK in Mac OS using Jenv - Stack Overflow
How do I switch between Java versions?
Videos
Try the "export" plugin:
jenv enable-plugin export
You can check the Export plugin section in Readme.md at the jEnv Github repo (https://github.com/gcuisinier/jenv)
For me, enabling the export plugin like kimbaudi didn't work. Adding the following code to .bash_profile (or .bashrc, .zprofile or .zshrc depending on what shell you use) did the job for me:
Copyif which jenv > /dev/null; then eval "$(jenv init -)"; fi
This was in the troubleshooting page, but they seemed to state it was in the instructions guide, which it wasn't.
The problem that you are seeing is because jenv is not setup properly for your terminal. Depending on your terminal, you should look at your .bash_profile or .zshrc and ensure that the following lines exist:
Copyexport PATH="$HOME/.jenv/bin:$PATH"
eval "$(jenv init -)"
You can test to see if jenv has been initialized properly in your terminal by running which java. If jenv is initialized properly you will see something like:
Copy/Users/your-username/.jenv/shims/java
If you don't see this, double check .bash_profile or .zshrc as described above. I also recommend that you place these at the end of the file so that you can be sure that jenv gets added onto the start of your PATH.
The magic behind jenv is jenv init. When you open your terminal this runs and updates your PATH to look at ~/.jenv/shims which contains a shim (shell script) which resolves your desired version of Java when you run java or other JRE/JDK commands.
Behind the scenes jenv uses the /Library/Java/JavaVirtualMachines directory.
Then you could also type /usr/libexec/java_home -V to show all the available JDKs and analyse your issue:
CopyMatching Java Virtual Machines (4):
11.0.2_2-OracleJDK, x86_64: "Java SE 11.0.2" /Library/Java/JavaVirtualMachines/OracleJDK-jdk-11.0.2.jdk/Contents/Home
11.0.2_1-OpenJDK, x86_64: "OpenJDK 11.0.2" /Library/Java/JavaVirtualMachines/OpenJDK-jdk-11.0.2.jdk/Contents/Home
1.8.0_11, x86_64: "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_11.jdk/Contents/Home
1.7.0_45, x86_64: "Java SE 7" /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home
/Library/Java/JavaVirtualMachines/OracleJDK-jdk-11.0.2.jdk/Contents/Home
In this exemple export JAVA_HOME=$(/usr/libexec/java_home -v 1.8) set the JDK 1.8 version.
Thus, you even could define the following aliases:
Copyjava11_OpenJDK_export='export JAVA_HOME=$(/usr/libexec/java_home -v 11.0.2_1-OpenJDK)'
java11_OracleJDK_export='export JAVA_HOME=$(/usr/libexec/java_home -v 11.0.2_2-OracleJDK)'
java7_export='export JAVA_HOME=$(/usr/libexec/java_home -v 1.7)'
java8_export='export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)'
NB: The version to use after java_home -v is defined in each JDK installation in the Contents/Info.plist file section JVMVersion.
I changed it, to easily switch between the OpenJDK and the Oracle JDK:
Copy$ tail -5 /Library/Java/JavaVirtualMachines/OpenJDK-jdk-11.0.2.jdk/Contents/Info.plist | head -2
<key>JVMVersion</key>
<string>11.0.2_1-OpenJDK</string>
$ tail -5 /Library/Java/JavaVirtualMachines/OracleJDK-jdk-11.0.2.jdk/Contents/Info.plist | head -2
<key>JVMVersion</key>
<string>11.0.2_2-OracleJDK</string>
So, in your case as you have two 1.8 versions (1.8 and 1.8.0.252). It is more than likely that you should update their Contents/Info.plist file section JVMVersion.