答案:CentOS安装JDK有两种方法:推荐使用yum安装Open-JDK,省心且依赖管理好;若需特定版本则手动下载解压并配置环境变量,关键步骤是设置JAVA_HOME、PATH和CLASSPATH,通过alternatives管理多版本(yum安装)或用别名切换(手动安装),开发者必须装JDK因需javac等工具。

在CentOS系统上安装JDK,对于任何Java开发者来说,都是迈入新项目的第一步,也是最基础的一步。说白了,这事儿不难,但配置环境总有些小细节,稍不注意就可能踩坑。核心思路无非两种:要么借助包管理器
yum快速部署Open-JDK,要么手动下载压缩包,自己解压配置环境变量。无论哪种,目标都是让你的系统能识别
java和
javac命令,为后续的开发工作打下基础。
老实说,我个人更倾向于使用
yum来安装Open-JDK,因为它省心,依赖管理也做得好。但如果你有特定版本需求,或者非要用Oracle JDK(虽然现在下载更麻烦了),手动安装也是必经之路。
方法一:利用yum
安装Open-JDK(推荐,省心)
这是最省事的方法,尤其是在CentOS这种基于RPM的系统上。
立即学习“Java免费学习笔记(深入)”;
-
检查可用的JDK版本: 在终端里敲入这行命令,你会看到一大堆和Java相关的包。
yum search java | grep -i --color "jdk"
通常,你会看到
java-1.8.0-openjdk-devel
(对应JDK 8)、java-11-openjdk-devel
(对应JDK 11)之类的。这里的devel
后缀很重要,它表示安装的是开发工具包(JDK),而不是仅仅运行环境(JRE)。 -
安装你需要的版本: 比如,我经常用JDK 8,那命令就是:
sudo yum install java-1.8.0-openjdk-devel -y
如果提示没有权限,记得加
sudo
。系统会帮你处理好所有依赖。 -
验证安装: 安装完成后,赶紧跑一下:
java -version javac -version
如果能看到正确的版本信息,恭喜你,基本搞定了!
-
设置默认Java版本(如果装了多个): CentOS有个很方便的工具叫
alternatives
。如果你系统里装了多个JDK版本,可以用它来切换默认。sudo alternatives --config java sudo alternatives --config javac
它会列出所有可用的Java版本,你输入对应的数字就能选择。
方法二:手动下载并配置JDK(更灵活,但稍显繁琐)
这种方法适用于你需要特定版本的Oracle JDK,或者
yum仓库里没有你想要的Open-JDK版本。
下载JDK压缩包: 通常是
.tar.gz
格式。你需要从官网(比如OpenJDK的官方下载页面)下载。这里就不具体写下载链接了,因为版本更新快,链接也可能变。上传到CentOS服务器: 用
scp
或者rz
命令把下载好的文件传到服务器上。我一般会放到~/Downloads
或者直接传到目标安装目录。-
创建安装目录并解压: 我习惯把所有手动安装的软件都放在
/usr/local
下,这样管理起来比较清晰。sudo mkdir -p /usr/local/java sudo tar -zxvf /path/to/your/jdk-*.tar.gz -C /usr/local/java/
解压后,
/usr/local/java
目录下应该会出现一个类似jdk1.8.0_xxx
或jdk-11.0.x
的文件夹。 -
配置环境变量: 这是手动安装的关键一步。我通常会在
/etc/profile.d/
目录下创建一个新的.sh
文件,比如java.sh
,这样可以避免直接修改/etc/profile
这个核心文件,也方便管理。sudo vim /etc/profile.d/java.sh
在
java.sh
里添加以下内容(记得把jdk1.8.0_xxx
替换成你实际解压出来的文件夹名):export JAVA_HOME=/usr/local/java/jdk1.8.0_xxx export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
保存并退出。
-
让环境变量生效:
source /etc/profile
或者直接重启会话(重新登录SSH)。
-
验证安装:
java -version javac -version echo $JAVA_HOME
确保
JAVA_HOME
指向你安装的路径,并且java
和javac
命令能正常运行。
为什么我需要安装JDK,而不是JRE?
这个问题,新手经常会问,但对我们开发者来说,答案其实挺明确的。简单来说,JRE(Java Runtime Environment)是Java程序的运行环境,它只包含Java虚拟机(JVM)和Java核心类库,能让你跑起来别人的Java应用。但如果你想自己写代码、编译代码,那就远远不够了。
JDK(Java Development Kit)才是我们的主力工具包。它在JRE的基础上,额外提供了
javac(Java编译器)、
jar(Java归档工具)、
javadoc(文档生成器)等一系列开发工具。没有
javac,你的
.java源文件就无法被编译成
.class字节码;没有
jar,你就没法打包你的应用或者库。所以,作为一名开发者,安装JDK是必须的,JRE只是它的一个子集,或者说是运行时的那一部分。我个人觉得,理解这个区别,能帮你更好地理解Java生态,也能避免一些不必要的配置困惑。
如何在CentOS上管理多个JDK版本?
在实际开发中,尤其是在维护老项目或者测试不同Java版本兼容性时,系统里同时存在多个JDK版本是常态。CentOS在这方面,针对
yum安装的JDK,提供了一个非常优雅的解决方案:
alternatives命令。
如果你是通过
yum安装的多个Open-JDK版本(比如JDK 8和JDK 11),你可以这样切换:
sudo alternatives --config java
执行后,你会看到一个列表,上面有你系统里所有通过
alternatives注册的Java可执行文件,以及它们的优先级。你只需要输入对应的数字,回车,系统就会把默认的
java命令指向你选择的版本。同理,
javac也需要这样设置:
sudo alternatives --config javac
这样操作的好处是,它会帮你管理
/usr/bin/java和
/usr/bin/javac这些符号链接,非常方便。
但如果是手动安装的JDK,
alternatives就帮不上忙了。这时候,管理多个版本主要靠环境变量。我通常会这样做:
为每个手动安装的JDK设置独立的
JAVA_HOME
。 比如,一个JAVA_HOME_8
指向JDK 8,一个JAVA_HOME_11
指向JDK 11。-
通过修改
~/.bashrc
或~/.bash_profile
来切换。 我会在这些文件里定义一些别名(alias)或者简单的函数,比如:# JDK 8 alias usejdk8='export JAVA_HOME=/usr/local/java/jdk1.8.0_xxx; export PATH=$JAVA_HOME/bin:$PATH; echo "Switched to JDK 8"' # JDK 11 alias usejdk11='export JAVA_HOME=/usr/local/java/jdk-11.0.x; export PATH=$JAVA_HOME/bin:$PATH; echo "Switched to JDK 11"'
然后,当你需要切换时,直接在终端输入
usejdk8
或usejdk11
就行了。当然,每次切换后,你可能需要重新source ~/.bashrc
或者开一个新的终端会话。
这种手动管理的方式虽然没有
alternatives那么自动化,但胜










