jdk安装及配置全过程(linux、windows)

 更新时间:2026年04月03日 09:05:36   作者:百战归来再读书  
文章主要介绍了JDK和JRE的区别,以及如何在Windows和Linux下安装和配置JDK,还包括了如何测试安装是否成功和卸载JDK的方法

一、JDK介绍

JRE(Java Runtime Envirnment):Java运行环境

如果你只是用于运行java程序,那么只需要安装jre即可

JDK(Java Development Kit):Java语言的软件开发工具包

如果你要开发java程序,那么就需要安装jdk

jdk包含了java开发工具,也包含了JRE,所以如果你是开发人员,就安装jdk即可

下载地址Oracle官网    华为云镜像   清华大学镜像  Bell Jdk下载   azul JDK下载  ADOPTIUM JDK下载   AWS JDK下载

二、windows安装

安装流程

1. 电脑类型确认

按 Win + R 打开运行,输入 msinfo32,回车确定后即可查看电脑配置信息

2. 安装

下载页面一般有两个格式 Compressed Archive 和 Installer ,前者直接是一个压缩包,需要手动配置环境变量,后者是一个安装程序,安装的时候可以选择自动配置环境变量,如果为了简单,可以使用后者,这里为了演示如何配置环境变量,我们用前者安装!

下载成功后解压

可以把解压后的文件放到我们指定的目录下,这里假设就放到了  D:\jdk1.8.0_451

3. 环境变量配置

  • 环境变量是操作系统用来存储系统配置信息的一种机制。它们可以被 操作系统本身或者应用程序使用,以决定如何运行和在哪里找到必要的资源
  • 通俗易懂点理解就是给电脑添加一个目录,让系统或软件快速找到关键路径
  • JAVA_HOME:告诉系统java安装在什么地方
  • PATH:让系统在任何地方都能直接运行javajavac等命令,而不用输入完整路径
  • CLASSPATH:告诉java虚拟机去哪里找class文件 ( jdk9之后无需再配置,有的无需配置是因为自Java 6开始,如果未手动设置 CLASSPATH,Java会自动搜索当前目录以及扩展目录下的类和jar包,有的需要配置可能jdk包有问题 )

使用 Win + R 打开“运行”对话框输入: sysdm.cpl   选择-高级-环境变量

点击系统变量中的新建

复制刚才安装jdk的位置路径

添加 JAVA_HOME 变量

变量名:JAVA_HOME    变量值:D:\jdk1.8.0_451        注意:变量值换成你的jdk安装目录位置,不要用我的

添加CLASSPATH变量

变量名:CLASSPATH    变量值:.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar

编辑PATH变量

变量值:%JAVA_HOME%\bin

这里解释下为什么有的还要加 %JAVA_HOME%\jre\bin

  • %JAVA_HOME%\bin:这个目录里放的是 Java 开发工具包(JDK)的核心命令
  • %JAVA_HOME%\jre\bin :  这个目录是用来运行 Java 程序的,但是上面bin下面已经有运行程序的组件了,一般来说这个不用再添加了,有的需要配置也是因为版本或者包不一样,这里如果你未添加导致运行java程序错误,那么可以把这个加进去尝试

4. 测试是否安装成功

win+r, 输入cmd,然后输入 java,出现下面画面说明安装成功

查看版本号  java -version

恭喜你,安装完成!

三、linux安装

普通安装

1. 系统类型确认

输入 uname -m 或 arch 

2. 在线安装

Ubuntu/Debian

更新软件包列表:sudo apt update
安装 OpenJDK: sudo apt install openjdk-8-jdk -y
验证安装: java -version

CentOS/RHEL

安装 OpenJDK:
sudo yum install java-8-openjdk-devel -y  # CentOS 7
sudo dnf install java-8-openjdk-devel -y  # CentOS 8+/RHEL
验证安装:java -version

默认安装位置

  • Debian/Ubuntu/usr/lib/jvm/java-8-openjdk-amd64/
  • CentOS/RHEL/usr/lib/jvm/java-8-openjdk-<version>/

3. 离线安装

解压安装包,假设包在/tmp目录下,执行下面命令把包安装到 /usr/local目录下

tar -zxvf  /tmp/jdk-xxx.tar.gz -C  /usr/local/\

配置环境变量

输入:vim /etc/profile

profile文件尾部添加

export JAVA_HOME=/usr/local/jdk1.8.0_441     # 后面位置是你的jdk安装路径
export PATH="$JAVA_HOME/bin:$PATH"

或者输入:

sh -c "echo 'export JAVA_HOME=/usr/local/jdk1.8.0_441' >> /etc/profile"
sh -c "echo 'export PATH=\"\$JAVA_HOME/bin:\$PATH\"' >> /etc/profile"

然后重启配置文件

source /etc/profile

4. 测试

输入: java -version

出现版本号说明安装成功!

脚本安装

把下载好Java的tar.gz文件放到一个目录下:

然后新建一个文件 install_jdk.sh,把下面脚本放进去

#!/bin/bash

# 定义安装目录
JDK_DIR="/usr/local/java"
TEMP_DIR="/tmp/jdk_install"

# 检查是否以root用户运行
if [ "$(id -u)" -ne 0 ]; then
  echo "请使用root用户运行此脚本!"
  exit 1
fi

# 查找当前目录下的.gz文件
JDK_PACKAGE=$(ls *.gz 2>/dev/null | head -n 1)

# 检查是否找到JDK压缩包
if [ -z "$JDK_PACKAGE" ]; then
  echo "错误: 当前目录下没有找到.gz结尾的JDK安装包!"
  exit 1
fi

echo "找到JDK安装包: $JDK_PACKAGE"

# 创建安装目录和临时目录
mkdir -p "$JDK_DIR"
mkdir -p "$TEMP_DIR"

echo "正在解压JDK..."
tar -xzf "$JDK_PACKAGE" -C "$TEMP_DIR"

# 获取解压后的JDK目录名
JDK_EXTRACTED_DIR=$(ls "$TEMP_DIR")

# 移动JDK文件到安装目录
echo "正在安装JDK到 $JDK_DIR..."
mv "$TEMP_DIR/$JDK_EXTRACTED_DIR"/* "$JDK_DIR"
rm -rf "$TEMP_DIR"

# 设置环境变量
echo "正在配置环境变量..."
cat >> /etc/profile <<EOF

# JDK环境配置
export JAVA_HOME=$JDK_DIR
export JRE_HOME=\$JAVA_HOME/jre
export CLASSPATH=.:\$JAVA_HOME/lib:\$JRE_HOME/lib
export PATH=\$JAVA_HOME/bin:\$PATH
EOF

# 使环境变量生效
source /etc/profile

# 创建软链接(可选)
update-alternatives --install "/usr/bin/java" "java" "$JDK_DIR/bin/java" 1
update-alternatives --install "/usr/bin/javac" "javac" "$JDK_DIR/bin/javac" 1
update-alternatives --set java "$JDK_DIR/bin/java"
update-alternatives --set javac "$JDK_DIR/bin/javac"

echo "JDK安装完成!"

# 验证安装
echo "正在验证安装..."
java -version

这个脚本会自动识别当前目录下gz结尾的文件,然后自动安装配置java

给脚本执行权限:chmod +x install_jdk.sh

运行脚本:./install_jdk.sh

测试是否安装成功: java -version

#如果报错 "bash: ./install_jdk8.sh: /bin/bash^M: bad interpreter"
执行: sed -i 's/\r$//' install_jdk.sh

四、卸载

正常卸载

删除 JDK 目录:

rm -rf /usr/local/jdk* 

删除环境变量配置:

sed -i '/JAVA_HOME/d' /etc/profile
sed -i '/PATH=.*JAVA_HOME/d' /etc/profil

重启配置:

source /etc/profile

脚本卸载

如果不懂shell脚本的话需要注意:

这个卸载脚本只用于上面自动安装脚本来执行的自动卸载脚本

#!/bin/bash

# 定义JDK安装目录
JDK_DIR="/usr/local/java"

# 检查是否以root用户运行
if [ "$(id -u)" -ne 0 ]; then
  echo "请使用root用户运行此脚本!"
  exit 1
fi

echo "开始卸载Java..."

# 1. 移除环境变量配置
echo "正在移除环境变量配置..."
sed -i '/# JDK环境配置/,/export PATH=\$JAVA_HOME\/bin:\$PATH/d' /etc/profile

# 2. 移除alternatives配置
echo "正在移除alternatives配置..."
update-alternatives --remove java "$JDK_DIR/bin/java" >/dev/null 2>&1
update-alternatives --remove javac "$JDK_DIR/bin/javac" >/dev/null 2>&1

# 3. 删除安装目录
echo "正在删除Java安装目录..."
rm -rf "$JDK_DIR"

# 4. 使环境变量生效
source /etc/profile

echo "Java卸载完成!"

# 验证卸载
echo "验证Java是否已卸载..."
if ! command -v java &> /dev/null; then
  echo "Java已成功卸载。"
else
  echo "警告: Java似乎仍然存在,请手动检查。"
  java -version
fi

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Springboot+echarts实现可视化

    Springboot+echarts实现可视化

    这篇文章主要为大家详细介绍了Springboot+echarts实现可视化,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-12-12
  • 如何将mybatis配置到springmvc中

    如何将mybatis配置到springmvc中

    为了更方便的连接数据库,将mybatis配置到springMVC中。接下来通过本文给大家分享如何将mybatis配置到springmvc中,需要的朋友参考下吧
    2017-11-11
  • 混乱的Java日志体系及集成jar包梳理分析

    混乱的Java日志体系及集成jar包梳理分析

    这篇文章主要详细的为大家梳理分析了剪不断理还乱的Java日志体系,以及日志系统涉及到的繁杂的各种集成 jar 包,有需要的朋友可以借鉴参考下,希望能够有所帮助
    2022-03-03
  • 详解Spring Boot下Druid连接池的使用配置分析

    详解Spring Boot下Druid连接池的使用配置分析

    本篇文章主要介绍了详解Spring Boot下Druid连接池的使用配置分析,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-06-06
  • lombok注解@Data使用在继承类上时出现警告的问题及解决

    lombok注解@Data使用在继承类上时出现警告的问题及解决

    Lombok的@Data注解简化了实体类代码,但在子类中使用时会出现警告,指出equals和hashCode方法不会考虑父类属性,解决方法有两种:一是在父类上使用@EqualsAndHashCode(callSuper=true)注解;二是通过配置lombok.config文件,均能有效解决警告问题
    2024-10-10
  • RabbitMQ之消息的可靠性方案详解

    RabbitMQ之消息的可靠性方案详解

    这篇文章主要介绍了RabbitMQ之消息的可靠性方案详解,MQ 消息数据完整的链路为:从 Producer 发送消息到 RabbitMQ 服务器中,再由 Broker 服务的 Exchange 根据 Routing_Key 路由到指定的 Queue 队列中,最后投送到消费者中完成消费,需要的朋友可以参考下
    2023-08-08
  • 详解Java分布式事务的 6 种解决方案

    详解Java分布式事务的 6 种解决方案

    在分布式系统、微服务架构大行其道的今天,服务间互相调用出现失败已经成为常态,本文侧重于其他几项,关于 2PC、3PC 传统事务,网上资料已经非常多了,这里不多做重复,本文通过示例给大家介绍Java分布式事务的 6 种解决方案,一起看看吧
    2021-06-06
  • 使用Java实现为PPT(PowerPoint)设置背景

    使用Java实现为PPT(PowerPoint)设置背景

    在日益数字化的办公环境中,PowerPoint 演示文稿已成为信息传达不可或缺的工具,本文将深入探讨如何利用 Spire.Presentation for Java 为PowerPoint幻灯片设置纯色、渐变色和图片背景,感兴趣的可以了解下
    2025-08-08
  • Java中Array List与Linked List的实现分析

    Java中Array List与Linked List的实现分析

    这篇文章主要给大家介绍了关于Array List与Linked List实现的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用java具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-09-09
  • 一文详解Java对象的序列化和反序列化

    一文详解Java对象的序列化和反序列化

    本文主要介绍了一文详解Java对象的序列化和反序列化,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-04-04

最新评论