Java为什么要设置环境变量、JAVA_HOME
2017-11-05 18:45
337 查看
1. 为什么要说这个问题?
想起来两年前刚学习Java时,被要求先要设置环境变量,自然不解,随后网上找答案。现在想来感觉当时看到的答案都是神神叨叨,含糊不清,没有几个说的明明白白的。当然也有可能是当时的我没看明白吧…
总之,相信我,看了我的博客,你不用再找别的地方了!
2. 环境变量
环境变量 就是英文直译:Environment Variable 。变量 知道吧?
对,就是可以随意给其赋值的一个存储单元。
那么环境 呢?
首先,你把操作系统当做是一个最大的软件,其它软件如Office、LOL、JVM等等都是运行在这个软件之内的小软件。
那么,环境 就是操作系统这个软件。
那么合起来“环境中的变量”是啥呢?
别逗我了你肯定懂了,环境变量就是操作系统这个软件中的变量,也就是:全局变量!
作用呢?
环境变量没什么特别的,变量在任何程序中的作用都是 被赋值/被使用!这个全局变量操作系统可以使用,其内的小软件也可以使用!
3. 环境变量长啥样?有哪些?
变量是啥样,环境变量就是啥样……XXX = XXX
1. 在Windows中:
这里是WIN10,如下图↓
当然,Windows是视窗系统,这里没有显式的给XXX=XXX这种方式,而是直接可以点击【编辑】操作。
2. 在Linux中:
在
/etc/profile文件中设置。
比如,其中有这样一行代码
export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL1
2
export的意思就是(将局部变量)设置环境变量,也可以理解为上文说的“全局变量”。这几个环境变量已经有一些默认值了,当然我们可以追加,比如:
# : 的意思是并列 PATH = /abc/def:$PATH1
2
4. 在Java中
知道了环境变量的作用了吧。那么,具体在Java中会用到哪些呢?它们的作用又是什么呢?有一点需要首先明白:环境变量大体上是给操作系统的直接上层程序用的。比如Linux中的
shell、
.sh文件;Windows中的
cmd、
.bat文件。
常见的Java相关环境变量与作用
PATH
这个其实是操作系统用的,用来指定操作系统需要使用到的程序的位置。对于Java来说,通常需要把JDK的bin目录添加进入
PATH中,这样你就可以在任意目录下使用bin下面的
javac.exe、
java.exe等。
这个变量一定要保证将JRE/JDK的bin纳入其中(这里我说的其实不严谨,你可以把
javaw.exe等这类文件复制一份放到任意一个
PATH路径下,不一定是JRE/JDK也行),这样很多Java程序才能启动,比如
Eclipse。
JAVA_HOME
JAVA_HOME是一个约定,通常它指的是JDK的目录。如果需要JDK的话,大部分程序会默认去环境变量中取
JAVA_HOME这个变量。
比如,Tomcat的
.bat/.sh文件中就会默认去取
JAVA_HOME来用。
所以,这个变量最需要设置。设置它,可保你万无一失,一生平安……
JRE_HOME
同样,这也是一个约定的变量,通常指JRE目录。其实大部分Java程序不需要JDK,而是只需要其子集JRE,所以很多程序也会去取这个变量来用。
例如,Tomcat中某些
.bat文件中这样说到:
rem JAVA_HOME Must point at your Java Development Kit installation. rem Using JRE_HOME instead works as well. rem rem JRE_HOME Must point at your Java Runtime installation. rem Defaults to JAVA_HOME if empty. If JRE_HOME and JAVA_HOME rem are both set, JRE_HOME is used.1
2
3
4
5
6
大意就是:Tomcat去取这俩变量,只要任意一个不为空就行,都不为空就用JRE_HOME了。因为Tomcat不需要JDK中的工具,它只是运行Java程序而已。
这个变量如果你明确知道应用程序只需要设置这个就行(比如上面Tomcat的注释),那么它可以代替JAVA_HOME,且最好就用这个。
CLASSPATH
基本上,这个变量指的是:由
AppClassLoader加载的class路径。(这个涉及到Java的类加载机制,大家先去了解一下然后就会明白了)。
这个变量就跟所有Java写的程序有关了,不光其它Java程序会用到(比如Tomcat在某些情况下会用),我们写的Java程序也能用到了。但其实……,如果你用
Eclipse的话你还是只需要点击点击
BuildPath就行了,还是没有让你显式的用
XXX=XXX这种方式。不过如果你用
Command Line来运行Java程序的话通常就会用到
set CLASSPATH了。
可以在Java程序中用代码获取到当前
CLASSPATH的内容,像这样:
System.getProperty("java.class.path") //输出是String内容 c138 是你项目的class文件的根目录 + 你引用的jar包们的地址。类似这样 E:\test1\target\classes;E:\Java\Program Files\.m2\repository\mysql\mysql-connector-java\5.1.38\mysql-connector-java-5.1.38.jar...1
2
3
所以,这个变量在使用IDE进行开发的情况下,通常不需要手动设置,只需要按常规IDE使用步骤(比如
Build Path)IDE会帮你做。
CATALINA_HOME
这是Tomcat用的。叫CATALINA这个名字我猜是因为Tomcat默认服务(也就
<Service></Service>标签)的名字就是CATALINA。当然,不管是不是其实不重要,毕竟变量的名字可以随意起(但最好见名知意),重要的是它存什么值。它的值代表当前tomat根目录,比如:
E:\apache-tomcat-7.0.55。
这个变量,只有在你把
.bat/.sh等用来启动Tomcat的文件移动位置了(就是不在原来的
tomcat\bin下面了)时才需要指定。
具体场景,比如说在Linux中你将
catalina.sh复制到
/etc/rc.d/init.d/下做自启动service时就需要设置。
总结如下:
1. 需要在操作系统下设置的变量:PATH中包含JRE/JDK的
bin目录;
JAVA_HOME或者
JRE_HOME。都设也可以,偷懒就只设
JAVA_HOME就可以。
2. 很少需要设置的:
CLASSPATH、
CATALINA_HOME
转载地址:http://blog.csdn.net/u010297957/article/details/51334951
相关文章推荐
- java开发为什么要设置环境变量path,class path,java_home
- 安装JDK,window下为什么要设置环境变量JAVA_HOME、CLASSPATH、PATH??
- Java为什么要设置环境变量、JAVA_HOME
- Java为什么要设置环境变量、JAVA_HOME
- JAVA中常用需要设置的三个环境变量(JAVA_HOME、CLASSPATH、PATH)
- 环境变量中的JAVA_HOME path classpath 的设置与作用。
- 为什么要设置Java环境变量(详解)
- Java设置classpth,path,java_home环境变量的目的
- 为什么要设置Java环境变量(详解)
- 环境变量设置:java_home,path,classpath
- JAVA环境变量JAVA_HOME、CLASSPATH、PATH设置详解
- Java 环境变量设置 -- JAVA_HOME CLASSPATH
- JAVA环境变量JAVA_HOME、CLASSPATH、PATH设置详解
- 为什么要设置Java环境变量(详解)
- tomcat 下solr的java 环境变量 solr.solr.home 设置
- java环境变量设置 java_home
- 环境变量的设置和对path , classpth ,java_home设置作用和目的的讲解
- JAVA环境变量JAVA_HOME、CLASSPATH、PATH设置详解
- CentOS中JAVA_HOME的环境变量设置
- Tomcat 5.0.28安装笔记与不设置JAVA_HOME环境变量 启动Tomcat