详解Java安装及环境变量配置(Windows&Linux)
前面有一篇《环境变量详解》介绍了 Windows 和 Linux 系统下的环境变量,这里介绍一下常见的 Java 环境变量配置。
下载JDK
首先,我们需要先去 Oracle 官方的 JDK 下载页面 https://www.oracle.com/technetwork/java/javase/downloads/index.html 下载 JDK。所下载的 JDK 的版本需要结合 JMeter 对 JDK 版本的要求来选择,这里选择下载 JDK 1.8 版本。笔者撰写这部分内容时的 JDK 版本为 1.8.0_u231。
BaiduShurufa_2019-11-12_23-27-7.png BaiduShurufa_2019-11-12_23-30-49.png下载完 JDK 之后像安装其他 Windows 程序一样按照安装向导直接安装即可。
Windows 下配置 Java 环境变量
步骤如下:
- Windows环境设置环境变量的步骤如前面所述,这里直接开始设置JDK 安装完毕后的 JAVA 环境变量。先将 JDK 主目录添加到 JAVA_HOME 环境变量。
看到这里你可能会有这样的疑问:为什么安装到了 C 盘而不是其他盘,难道不怕影响系统性能吗?哥的 C 盘是固态硬盘,安装到其他盘反而会发挥不出固态硬盘的性能(SSD党在这里骄(zhuang)傲(bi)三秒钟,哈哈),为什么不是
Program files
默认目录呢?因为系统默认目录可能会有写权限的限制,我就把所有开发相关的软件统一安装到了一个自定义目录 softwares 中了。
- 然后在将 JDK 的 bin 目录添加到 Path 环境变量中:
选中用户的 Path 环境变量,选择编辑
按钮,在弹出的对话框中,点击新建
按钮,将 %JAVA_HOME%
目录添加到 Path中:
-
验证。在命令行中输入
java --version
命令,可以看到如下提示说明环境变量设置成功并生效:C:\Users\vincent>java -version java version "1.8.0_231" Java(TM) SE Runtime Environment (build 1.8.0_231-b01) Java HotSpot(TM) 64-Bit Server VM (build 25.144-b01, mixed mode)
神马?明明设置了环境变量但是提示找不到 java 命令,那试试《环境变量详解》中介绍的如何快速刷新 Windows 下的环境变量设置吧。
你可能从网上看到过 Java 还需要配置 CLASSPATH 环境变量的,该环境变量主要用来告知 JRE 去哪里寻找所要运行的 .class 文件(可能在一个 jar 包中),这个环境变量通常设置为:
.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar
其中,.
表示当前目录,dt.jar
和 tools.jar
包含编译和运行java程序的 .class 文件。其实从 JDK 1.5 开始,JRE会自动搜索当前目录下的 .class 文件,当使用 Java 的编译和运行工具是,系统会自动加载dt.jar
和 tools.jar
中包含的 .class 文件。所以,从 JDK 1.5 开始 CLASSPATH 环境变量就不需要设置了,但是,只要设置了就必须设置为上面的值,否则编译或运行 Java 程序就会出错。
Linux 下配置 Java 环境变量
-
首先在官方网站上下载 JDK 安装文件,我下载的为:jdk-8u171-linux-x64.rpm,当然也可以下载 .tar.gz 格式的文件,但是这种文件需要手动解压后复制安装文件到目标安装目录(一般为 /usr/java/jdk1.8.0_171 格式的目录)中,这里不再详细介绍;
-
使用 FTP 工具将 jdk-8u171-linux-x64.rpm 安装文件上传至 Linux 的某个用户目录中(我这里为 /home/tomcat 目录),然后安装 jdk-8u171-linux-x64.rpm:
[root@localhost tomcat]# yum localinstall jdk-8u171-linux-x64.rpm
-
如果需要设置系统级别的环境变量来让所有用户可用,则可以使用
sudo vim /etc/profile.d/java_home.sh
命令新建一个sh
文件,并配置以下环境变量:
# Oracel Java Environment Variables Configuration Start
export JAVA_HOME=/usr/java/jdk1.8.0_171-amd64
# CLASSPATH is not necessary since JDK 1.5
#export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
# Oracel Java Environment Variables Configuration End
如果需要设置针对某个特定用户的环境变量,则可以使用sudo vim ~/.bashrc
命令在文件末尾添加上面的环境变量配置。
使用 vim 保存后,可以执行 cat /etc/profile.d/java_home.sh
命令(系统级设置)或 cat ~/.bashrc
命令(用户级设置)查看一下配置是否正确。
- 修改完成后,接下来需要更新环境变量配置。
对于系统及环境变量,可以使用 source /etc/profile
命令进行更新(查看/etc/profile
文件的内容发现该文件会读取 /etc/profile.d/java_home.sh
中的配置)。如果该命令操作时提示权限不足,那么将 $JAVA_HOME/lib/dt.jar
和 $JAVA_HOME/lib/tools.jar
这两个文件的权限修改为可执行,然后重新执行 source /etc/profile
命令:
[root@localhost jdk1.8.0_171-amd64]# source /etc/profile
-bash: /usr/java/jdk1.8.0_171-amd64/lib/tools.jar: Permission denied
[root@localhost tomcat]# cd /usr/java/jdk1.8.0_171-amd64/lib
[root@localhost lib]# ll
total 39780
drwxr-xr-x. 3 root root 4096 May 23 21:03 amd64
-rw-r--r--. 1 root root 1218653 Mar 29 08:21 ant-javafx.jar
-rw-r--r--. 1 root root 18229876 Mar 29 08:15 ct.sym
-rw-r--r--. 1 root root 159870 Mar 29 08:21 dt.jar
-rw-r--r--. 1 root root 18432 Mar 29 08:15 ir.idl
-rw-r--r--. 1 root root 35992 Mar 29 08:23 javafx-mx.jar
-rw-r--r--. 1 root root 404452 Mar 29 08:21 jconsole.jar
-rwxr-xr-x. 1 root root 10493 Mar 29 08:21 jexec
drwxr-xr-x. 7 root root 4096 May 23 21:03 missioncontrol
-rw-r--r--. 1 root root 640 Mar 29 08:15 orb.idl
-rw-r--r--. 1 root root 4633 Mar 29 08:23 packager.jar
-rw-r--r--. 1 root root 2381736 Mar 29 08:21 sa-jdi.jar
-rw-r--r--. 1 root root 18233649 May 23 21:03 tools.jar
drwxr-xr-x. 6 root root 4096 May 23 21:03 visualvm
[root@localhost lib]# chmod 751 dt.jar
[root@localhost lib]# chmod 751 tools.jar
[root@localhost lib]# ll
total 39780
-wxr-xr-x. 3 root root 4096 May 23 21:03 amd64
-rw-r--r--. 1 root root 1218653 Mar 29 08:21 ant-javafx.jar
-rw-r--r--. 1 root root 18229876 Mar 29 08:15 ct.sym
-rwxr-x--x. 1 root root 159870 Mar 29 08:21 dt.jar
-rw-r--r--. 1 root root 18432 Mar 29 08:15 ir.idl
-rw-r--r--. 1 root root 35992 Mar 29 08:23 javafx-mx.jar
-rw-r--r--. 1 root root 404452 Mar 29 08:21 jconsole.jar
-rwxr-xr-x. 1 root root 10493 Mar 29 08:21 jexec
drwxr-xr-x. 7 root root 4096 May 23 21:03 missioncontrol
-rw-r--r--. 1 root root 640 Mar 29 08:15 orb.idl
-rw-r--r--. 1 root root 4633 Mar 29 08:23 packager.jar
-rw-r--r--. 1 root root 2381736 Mar 29 08:21 sa-jdi.jar
-rwxr-x--x. 1 root root 18233649 May 23 21:03 tools.jar
drwxr-xr-x. 6 root root 4096 May 23 21:03 visualvm
[root@localhost jdk1.8.0_171-amd64]# source /etc/profile
如果没有root
用户密码,则可以使用sudo source /etc/profile
命令(前提是当前用户在 root 组中,该命令会提示输入当前用户的密码),如果执行sudo source /etc/profile
命令时提示source: command not found
,请仔细检查所配置的环境变量(字母和路径)是否正确,或尝试执行locate source /etc/profile
命令或/usr/bin/source /etc/profile
命令。
对于用户级环境变量,会在修改了~/.bashrc
命令之后立即生效。
-
有的 Linux 系统中预装了 Open JDK,所以即使上面进行了上面这些步骤,可能系统默认的 JDK 还不是 Oracle JDK,如果要真正使用 Oracle JDK,可以选择卸载 Open JDK:
[root@localhost ~]# rpm -qa | grep openjdk java-1.8.0-openjdk-headless-1.8.0.102-4.b14.el7.x86_64 java-1.7.0-openjdk-headless-1.7.0.111-2.6.7.8.el7.x86_64 java-1.8.0-openjdk-1.8.0.102-4.b14.el7.x86_64 java-1.7.0-openjdk-1.7.0.111-2.6.7.8.el7.x86_64 [root@localhost ~]# rpm -e --nodeps java-1.8.0-openjdk [root@localhost ~]# rpm -e --nodeps java-1.7.0-openjdk [root@localhost ~]# rpm -e --nodeps java-1.8.0-openjdk-headless [root@localhost ~]# rpm -e --nodeps java-1.7.0-openjdk-headless [root@localhost ~]# rpm -qa | grep openjdk [root@localhost ~]#
确定 Open JDK 已经完全卸载了,然后就可以为 Oracle JDK 设置环境变量了。当然,也可以不卸载 Open JDK 而直接安装 Oracle JDK,然后为 Oracle JDK 设置环境变量就行了。
-
使用
java -version
命令来查看我们的 java 环境变量,显示如下版本信息说明大功告成:[root@localhost tomcat]# echo $JAVA_HOME /usr/java/jdk1.8.0_171-amd64 [root@localhost tomcat]# java -version java version "1.8.0_171" Java(TM) SE Runtime Environment (build 1.8.0_171-b11) Java HotSpot(TM) 64-Bit Server VM (build 25.171-b11, mixed mode) [root@localhost tomcat]# javac -version javac 1.8.0_171 [root@localhost tomcat]#