我使用的是 jdk 1.7,安装后我没有设置 JAVA_HOME 或 CLASSPATH 环境变量,我用它来编译一个 servlet 类,一切正常。
所以我想知道,为什么我不应该设置这些环境变量?JDK 可以自动解析 CLASSPATH 吗?
我使用的是 jdk 1.7,安装后我没有设置 JAVA_HOME 或 CLASSPATH 环境变量,我用它来编译一个 servlet 类,一切正常。
所以我想知道,为什么我不应该设置这些环境变量?JDK 可以自动解析 CLASSPATH 吗?
JAVA_HOME
某些工具(Ant、Maven 等)使用,但 Java(或 javac)本身不需要。
CLASSPATH
永远不应该使用。它设置了一个全局类路径,该路径应该对安装在您计算机上的多个 Java 程序通用,这是完全不现实的。每个程序都应该有自己的类路径作为参数传递给使用该-classpath
选项的命令。
在所有平台上都是如此。
大多数 Unix 和 Mac 在“终端”中使用所谓的 Bash Shell。当您在 Bash shell 中启动可执行程序(具有可执行文件权限)时,系统会在 PATH 中列出的所有目录中搜索该程序。
有JAVA_HOME
路径,可以设置为:
setenv JAVA_HOME /System/Library/Frameworks/JavaVM.framework/Home
设置JAVA_HOME
:
$ vi ~/.bash_profile
export JAVA_HOME=$(/usr/libexec/java_home)
$ source ~/.bash_profile
$ echo $JAVA_HOME
/Library/Java/JavaVirtualMachines/jdk-11.0.1.jdk/Contents/Home