Java为什么要设置环境变量、JAVA_HOME

1. 为什么要说这个问题?

想起来两年前刚学习Java时,被要求先要设置环境变量,自然不解,随后网上找答案。

现在想来感觉当时看到的答案都是神神叨叨,含糊不清,没有几个说的明明白白的。当然也有可能是当时的我没看明白吧…

总之,相信我,看了我的博客,你不用再找别的地方了!

2. 环境变量

环境变量 就是英文直译:Environment Variable

  1. 变量 知道吧?

    对,就是可以随意给其赋值的一个存储单元。

  2. 那么环境 呢?

    首先,你把操作系统当做是一个最大的软件,其它软件如Office、LOL、JVM等等都是运行在这个软件之内的小软件。

    那么,环境 就是操作系统这个软件。

  3. 那么合起来“环境中的变量”是啥呢?

    别逗我了你肯定懂了,环境变量就是操作系统这个软件中的变量,也就是:全局变量

  4. 作用呢?

    环境变量没什么特别的,变量在任何程序中的作用都是 被赋值/被使用!这个全局变量操作系统可以使用,其内的小软件也可以使用!

3. 环境变量长啥样?有哪些?

变量是啥样,环境变量就是啥样……

XXX = XXX

1. 在Windows中:

这里是WIN10,如下图↓

当然,Windows是视窗系统,这里没有显式的给XXX=XXX这种方式,而是直接可以点击【编辑】操作。

2. 在Linux中:

/etc/profile 文件中设置。

比如,其中有这样一行代码

export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL

export的意思就是(将局部变量)设置环境变量,也可以理解为上文说的“全局变量”。这几个环境变量已经有一些默认值了,当然我们可以追加,比如:

# : 的意思是并列
PATH = /abc/def:$PATH

4. 在Java中

知道了环境变量的作用了吧。那么,具体在Java中会用到哪些呢?它们的作用又是什么呢?

  • 有一点需要首先明白:环境变量大体上是给操作系统的直接上层程序用的。比如Linux中的shell.sh文件;Windows中的cmd.bat文件。

常见的Java相关环境变量与作用

  1. PATH

    这个其实是操作系统用的,用来指定操作系统需要使用到的程序的位置。对于Java来说,通常需要把JDK的bin目录添加进入PATH中,这样你就可以在任意目录下使用bin下面的javac.exejava.exe等。

    这个变量一定要保证将JRE/JDK的bin纳入其中(这里我说的其实不严谨,你可以把javaw.exe等这类文件复制一份放到任意一个PATH路径下,不一定是JRE/JDK也行),这样很多Java程序才能启动,比如Eclipse

  2. JAVA_HOME

    JAVA_HOME是一个约定,通常它指的是JDK的目录。如果需要JDK的话,大部分程序会默认去环境变量中取JAVA_HOME这个变量。

    比如,Tomcat的.bat/.sh文件中就会默认去取JAVA_HOME来用。

    所以,这个变量最需要设置。设置它,可保你万无一失,一生平安……

  3. 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.

    大意就是:Tomcat去取这俩变量,只要任意一个不为空就行,都不为空就用JRE_HOME了。因为Tomcat不需要JDK中的工具,它只是运行Java程序而已。

    这个变量如果你明确知道应用程序只需要设置这个就行(比如上面Tomcat的注释),那么它可以代替JAVA_HOME,且最好就用这个。

  4. 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内容是你项目的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...

    所以,这个变量在使用IDE进行开发的情况下,通常不需要手动设置,只需要按常规IDE使用步骤(比如Build Path)IDE会帮你做。

  5. 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. 需要在操作系统下设置的变量:

  1. PATH中包含JRE/JDK的bin目录;
  2. JAVA_HOME或者JRE_HOME。都设也可以,偷懒就只设 JAVA_HOME就可以。

2. 很少需要设置的:

CLASSPATHCATALINA_HOME

时间: 2024-07-29 10:12:13

Java为什么要设置环境变量、JAVA_HOME的相关文章

java安装及设置环境变量

目录: java安装 (找不到或无法加载主类 com.sun.tools.javac.Main) 设置环境变量 1. java安装 情景:不使用默认安装 问题:cmd-javac 找不到或无法加载主类 com.sun.tools.javac.Main 解决:卸载,重新安装:jdk和jre不能装在一个文件夹下. e.g. jdk -- D:\program\Java\jdk1.7.0_79       jre -- D:\program\Java\jre7 原因:安装jdk过程中,还会弹出一个jr

[转]Linux下修改/设置环境变量JAVA_HOME

1. 永久修改,对所有用户有效  # vi /etc/profile //按键盘[Shift + g], 在profile文件最后添加下面的内容: export JAVA_HOME = /home/myuser/jdk1.7.0_03    export PATH = $JAVA_HOME/bin:$PATH     export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar [注]:修改文件后如果想马上生效,还要运行 #s

Linux下修改/设置环境变量JAVA_HOME

export设置只对当前的bash登录session有效.这是存在内存里面的.你可以写入文件一般的文件.之后source它.或者放到/etc/profile 等等的位置里,不同的地方效果不同. 1. 永久修改,对所有用户有效  # vi /etc/profile //按键盘[Shift + g], 在profile文件最后添加下面的内容: export JAVA_HOME = /home/myuser/jdk1.7.0_03    export PATH = $JAVA_HOME/bin:$PA

JAVA环境变量JAVA_HOME、CLASSPATH、PATH设置详解

JAVA环境变量JAVA_HOME.CLASSPATH.PATH设置详解 Windows下JAVA用到的环境变量主要有3个,JAVA_HOME.CLASSPATH.PATH.下面逐个分析. JAVA_HOME 指向的是JDK的安装路径,如C:\jdk1.5.0_06,在这路径下你应该能够找到bin.lib等目录.值得一提的是,JDK的安装路径可以选择任意磁盘目录,不过建议你放的目录层次浅一点,如果你放的目录很深,比如x:\XXXXXX\xxxxx\XXXX\xxxx\XXXX\xxxx\XXXX

[转]JAVA环境变量JAVA_HOME、CLASSPATH、PATH设置详解

[转] JAVA环境变量JAVA_HOME.CLASSPATH.PATH设置详解 - dreamman的日志 - 网易博客http://blog.163.com/dreamman_yx/blog/static/26526894200842414338201/ Windows下JAVA用到的环境变量主要有3个,JAVA_HOME.CLASSPATH.PATH.下面逐个分析. JAVA_HOME 指向的是JDK的安装路径,如C:\jdk1.5.0_06,在这路径下你应该能够找到bin.lib等目录.

JAVA环境变量JAVA_HOME、CLASSPATH、PATH设置详解(转)

Windows下JAVA用到的环境变量主要有3个,JAVA_HOME.CLASSPATH.PATH.下面逐个分析. JAVA_HOME 指向的是JDK的安装路径,如C:\jdk1.5.0_06,在这路径下你应该能够找到bin.lib等目录.值得一提的是,JDK的安装路径可以选择任意磁盘目录,不过建议你放的目录层次浅一点,如果你放的目录很深,比如x:\XXXXXX\xxxxx\XXXX\xxxx\XXXX\xxxx\XXXX\xxx……那么,下面的步骤和以后的应用你都要受累了,呵呵.设置方法: J

【java】Windows7 下设置环境变量

Windows 7下配置JDK环境变量參数设置: 1.    安装JDK,安装过程中能够自己定义安装文件夹等信息,比如我们选择安装文件夹为:D:\Program Files (x86)\Java\jdk1.6.0_25 2.    安装完毕后,右击"我的电脑",点击"属性",单击"高级系统设置",点击"环境变量",如图: 4.    在"系统变量"中,设置3项属性,JAVA_HOME,PATH,CLASSP

Java新手安装jdk设置环境变量必备!

众说周知,java开发的第一步就是要成功安装jdk,但配置环境出现的问题层出不穷,这里介绍设置环境变量的三部曲: JAVA_HOME:C:\Program Files\Java\jdk1.7.0_80     注:这个地方填写jdk的安装目录(个人建议安装jdk时一路默认路径,不要做修改,也占不了多少C盘) CLASSPATH:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar    注: 这个地方无需变动 path:%JAVA_HOME%\bi

java设置环境变量

1.首先下载安装JDK安装包,安装过程中注意安装到其他盘,不要安装到C盘就好. 2.打开我的电脑--属性--高级--环境变量 : 3.新建系统变量JAVA_HOME 和CLASSPATH 变量名:JAVA_HOME 变量值:C:\Program Files\Java\jdk1.7.0 变量名:CLASSPATH 变量值:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar; 其中变量值为你自己安装jdk的文件目录这里要注意. 4.选择"系统变量&q