simbro
simbro

Reputation: 3662

Unable to get java command to use correct version of Java

I can't see to set the correct version of Java to use, even though I have set JAVA_HOME correctly:

$ echo $JAVA_HOME
/Library/Java/JavaVirtualMachines/jdk-11.0.8.jdk/Contents/Home/
$ java -version
java version "1.8.0_202"
Java(TM) SE Runtime Environment (build 1.8.0_202-b08)
Java HotSpot(TM) 64-Bit Server VM (build 25.202-b08, mixed mode)
$ /usr/libexec/java_home -V
Matching Java Virtual Machines (5):
    11.0.8, x86_64: "Java SE 11.0.8"    /Library/Java/JavaVirtualMachines/jdk-11.0.8.jdk/Contents/Home
    11.0.2, x86_64: "Java SE 11.0.2"    /Library/Java/JavaVirtualMachines/jdk-11.0.2.jdk/Contents/Home
    11.0.2, x86_64: "OpenJDK 11.0.2"    /Library/Java/JavaVirtualMachines/openjdk-11.0.2.jdk/Contents/Home
    1.8.0_202, x86_64:  "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_202.jdk/Contents/Home
    1.8.0_181, x86_64:  "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home

/Library/Java/JavaVirtualMachines/jdk-11.0.8.jdk/Contents/Home

How do I get the java command to use the correct JDK?

I'm on MacOS Mojave 10.15.6

I tried this solution, but it didn't work :-(

Upvotes: 1

Views: 122

Answers (1)

Chayne P. S.
Chayne P. S.

Reputation: 1638

Normally, on OSX, the java command should follow JAVA_HOME unless somehow other java takes precedence.

You can use which java to show where actually the java you call according to your $PATH.

➜ which java
/usr/bin/java

➜ ls -la /usr/bin/java
lrwxr-xr-x  1 root  wheel  74 Jun 10 14:33 /usr/bin/java -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java

You can see in my machine /usr/bin/java actually symlink to /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java which is a kind of proxy to call the right java according to $JAVA_HOME

So, my suggestion is sorting out your $PATH to call /usr/bin first. Or just set export PATH=/usr/bin:$PATH to put /usr/bin in the front.

Upvotes: 1

Related Questions