我的Java版本是:
java version "1.8.0_121"
Java(TM) SE Runtime Environment (build 1.8.0_121-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)
Run Code Online (Sandbox Code Playgroud)
我没有JAVA_HOME在 my 中设置~/.bash_profile,但我可以同时使用javac和java!
我的.bash_profile看起来像这样:
export EDITOR="vim"
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion
export MAVEN_HOME="$HOME/opt/maven"
export PATH="$PATH:$MAVEN_HOME/bin"
Run Code Online (Sandbox Code Playgroud)
如果我想安装其他版本的JDK,例如11、14、15....,我该如何使用它?我需要设置吗JAVA_HOME?
而如果我同时安装了多个版本的JDK,如何根据需要在不同的时间使用它们呢?我在网上看到的是配置Java_Home,我完全不知道该怎么做,因为我担心我安装了其他几个版本的JDK后,它们都不起作用。
我使用 MacOS Big Sur。
Joa*_*uer 14
JAVA_HOME被广泛误解。
Java 本身(即java和javac相关的可执行文件)实际上并不关心JAVA_HOME.
当它们被执行时,它们知道要使用哪个 JDK(与它们关联的那个)。唯一相关的是您的 shell(或其他工具)首先找到可执行文件,并为此PATH使用. 请注意,这PATH是当今基本上所有广泛使用的通用操作系统用来查找可执行文件的通用变量。这不是Java 特有的事情。
换句话说:当java直接从 shell 启动时,只有PATH相关。
那么为什么会JAVA_HOME如此频繁地出现呢?
一些第三方工具(例如 Gradle、Maven、Tomcat 等)将用于JAVA_HOME查找合适的 JDK/JRE 来执行。PATH如果没有JAVA_HOME设置,大多数这样做的人都会回退到任何内容。
因此,如果您使用这样的工具并且想要指定特定的 Java 版本,那么您可以设置JAVA_HOME为附加提示。
JAVA_HOME设置为指向您首选的 Java 运行时可能是个好主意,但对于很多事情来说这并不是必需的。
一种常用的模式是定义一个JAVA_HOME指向您首选的 JDK,然后使用它来设置您的PATH. 这样两者就会保持一致,如果首选 JDK 发生变化,您只需更改一点即可:
export JAVA_HOME="/some/path/pointing/to/a/jdk"
export PATH="$JAVA_HOME/bin:$PATH"
Run Code Online (Sandbox Code Playgroud)