centos安装JDK和Maven

本文详细介绍了如何在CentOS上通过yum安装JDK(包括选择正确的包以确保编译能力),以及手动安装JDK并切换版本。同时,还指导了如何配置Maven环境,包括下载、解压、设置环境变量和镜像,确保高效依赖包管理。

centos安装JDK和Maven

有时候我们可能会需要直接在centos中用maven编译java项目并运行项目,那么就需要在centos中安装jdk和maven。安装jdk的时候有两种方式:

  1. 通过yum install
  2. 下载jdk包手动安装

安装JDK

用yum安装

先说结论:如果需要能在centos执行maven编译的话,需要执行如下命令安装jdk:yum install java-1.8.0-openjdk-devel.x86_64
正文开始:
用yum安装的时候需要选择好对应的包。
如果你是执行如下命令(参考的这篇文章:How to Install Apache Maven on CentOS 7):

yum install java-1.8.0-openjdk

那么在maven编译的时候会报如下错误:

[ERROR] No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?

因为这个只是安装了JRE环境,只能运行java程序,没有javac,不能进行编译操作。

所以要选好正确的包,此处我们需要在centos直接编译,所以需要带有java编译器的版本:

  1. 首先查看一下有哪些包可以选择:
yum list java*

显示大致结果如下:

已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
已安装的软件包
java-1.8.0-openjdk.x86_64                                                                                              1:1.8.0.402.b06-1.el7_9                                                                                    @updates
java-1.8.0-openjdk-headless.x86_64                                                                                     1:1.8.0.402.b06-1.el7_9                                                                                    @updates
javapackages-tools.noarch                                                                                              3.4.1-11.el7                                                                                               @base   
可安装的软件包
java-1.6.0-openjdk.x86_64                                                                                              1:1.6.0.41-1.13.13.1.el7_3                                                                                 base    
java-1.6.0-openjdk-demo.x86_64                                                                                         1:1.6.0.41-1.13.13.1.el7_3                                                                                 base    
java-1.6.0-openjdk-devel.x86_64                                                                                        1:1.6.0.41-1.13.13.1.el7_3                                                                                 base    
java-1.6.0-openjdk-javadoc.x86_64                                                                                      1:1.6.0.41-1.13.13.1.el7_3                                                                                 base    
java-1.6.0-openjdk-src.x86_64                                                                                          1:1.6.0.41-1.13.13.1.el7_3                                                                                 base    
java-1.7.0-openjdk.x86_64                                                                                              1:1.7.0.261-2.6.22.2.el7_8                                                                                 base    
java-1.7.0-openjdk-accessibility.x86_64                                                                                1:1.7.0.261-2.6.22.2.el7_8                                                                                 base    
java-1.7.0-openjdk-demo.x86_64                                                                                         1:1.7.0.261-2.6.22.2.el7_8                                                                                 base    
java-1.7.0-openjdk-devel.x86_64                                                                                        1:1.7.0.261-2.6.22.2.el7_8                                                                                 base    
java-1.7.0-openjdk-headless.x86_64                                                                                     1:1.7.0.261-2.6.22.2.el7_8                                                                                 base    
java-1.7.0-openjdk-javadoc.noarch                                                                                      1:1.7.0.261-2.6.22.2.el7_8                                                                                 base    
java-1.7.0-openjdk-src.x86_64                                                                                          1:1.7.0.261-2.6.22.2.el7_8                                                                                 base    
java-1.8.0-openjdk.i686                                                                                                1:1.8.0.402.b06-1.el7_9                                                                                    updates 
java-1.8.0-openjdk-accessibility.i686                                                                                  1:1.8.0.402.b06-1.el7_9                                                                                    updates 
java-1.8.0-openjdk-accessibility.x86_64                                                                                1:1.8.0.402.b06-1.el7_9                                                                                    updates 
java-1.8.0-openjdk-demo.i686                                                                                           1:1.8.0.402.b06-1.el7_9                                                                                    updates 
java-1.8.0-openjdk-demo.x86_64                                                                                         1:1.8.0.402.b06-1.el7_9                                                                                    updates 
java-1.8.0-openjdk-devel.i686                                                                                          1:1.8.0.402.b06-1.el7_9                                                                                    updates 
java-1.8.0-openjdk-devel.x86_64                                                                                        1:1.8.0.402.b06-1.el7_9                                                                                    updates 
java-1.8.0-openjdk-headless.i686                                                                                       1:1.8.0.402.b06-1.el7_9                                                                                    updates 
java-1.8.0-openjdk-javadoc.noarch                                                                                      1:1.8.0.402.b06-1.el7_9                                                                                    updates 
java-1.8.0-openjdk-javadoc-zip.noarch                                                                                  1:1.8.0.402.b06-1.el7_9                                                                                    updates 
java-1.8.0-openjdk-src.i686                                                                                            1:1.8.0.402.b06-1.el7_9                                                                                    updates 
java-1.8.0-openjdk-src.x86_64                                                                                          1:1.8.0.402.b06-1.el7_9                                                                                    updates 
java-11-openjdk.i686                                                                                                   1:11.0.22.0.7-1.el7_9                                                                                      updates 
java-11-openjdk.x86_64                                                                                                 1:11.0.22.0.7-1.el7_9                                                                                      updates 
java-11-openjdk-demo.i686                                                                                              1:11.0.22.0.7-1.el7_9                                                                                      updates 
java-11-openjdk-demo.x86_64                                                                                            1:11.0.22.0.7-1.el7_9                                                                                      updates 
java-11-openjdk-devel.i686                                                                                             1:11.0.22.0.7-1.el7_9                                                                                      updates 
java-11-openjdk-devel.x86_64                                                                                           1:11.0.22.0.7-1.el7_9                                                                                      updates 
java-11-openjdk-headless.i686                                                                                          1:11.0.22.0.7-1.el7_9                                                                                      updates 
java-11-openjdk-headless.x86_64                                                                                        1:11.0.22.0.7-1.el7_9                                                                                      updates 
java-11-openjdk-javadoc.i686      

这么多包该选哪个不确定,唯一确定的是我目前需要1.8版本的jdk,来问一下gpt4这些版本有啥区别(本处使用的AI对话网站为谷流仓AI):

这些都是OpenJDK 8的不同包,每个包都有自己特定的用途:

- `java-1.8.0-openjdk.i686`和`java-1.8.0-openjdk.x86_64`: 这是标准的OpenJDK 8的JRE包,包含了运行Java程序所需的环境。其中,i686是32位版本,x86_64是64位版本。

- `java-1.8.0-openjdk-accessibility.i686`和`java-1.8.0-openjdk-accessibility.x86_64`: 这是与Java访问性功能相关的包。这些包为视觉或听觉障碍的用户提供了一些额外的工具和库。

- `java-1.8.0-openjdk-demo.i686`和`java-1.8.0-openjdk-demo.x86_64`: 这些是附带了一些示例程序的OpenJDK包。

- `java-1.8.0-openjdk-devel.i686`和`java-1.8.0-openjdk-devel.x86_64`: 这是OpenJDK的开发包,包含了Java开发所需的工具,例如Java编译器(javac)和其他工具(如javadoc、jdb等)。如果你需要开发Java程序,你需要安装这个包。

- `java-1.8.0-openjdk-headless.i686`和`java-1.8.0-openjdk-headless.x86_64`: 这是不包含图形界面的JRE版本。对于服务器环境或者不需要图形界面的应用,可以选择安装这个版本。

- `java-1.8.0-openjdk-javadoc.noarch`和`java-1.8.0-openjdk-javadoc-zip.noarch`: 这是OpenJDK的文档包,如果你需要Java API的文档,你可以安装这个包。

- `java-1.8.0-openjdk-src.i686`和`java-1.8.0-openjdk-src.x86_64`: 这是OpenJDK的源代码包,如果你需要查看或者修改OpenJDK的源代码,你可以安装这个包。

根据你的需要,你可能需要安装一个或者多个包。例如,如果你需要在64位系统上开发Java程序,你可能需要安装`java-1.8.0-openjdk.x86_64`和`java-1.8.0-openjdk-devel.x86_64`。如果你需要运行Java程序,但不需要开发,那么只安装`java-1.8.0-openjdk.x86_64`就足够了。

看到如上回答,基本可以确定要选择java-1.8.0-openjdk-devel.x86_64了,因为我需要java编译器,那么就执行:

yum install java-1.8.0-openjdk-devel.x86_64

然后验证一下:

java -version
# 输出结果:
# openjdk version "1.8.0_402"
# OpenJDK Runtime Environment (build 1.8.0_402-b06)
# OpenJDK 64-Bit Server VM (build 25.402-b06, mixed mode)
javac -verison
# 输出结果:javac 1.8.0_402

说明javajavac都安装好了。
下面再来尝试一下mvn clean install -Dmaven.test.skip=true,发现编译成功了,那么至此就完成了。

下载JDK安装包手动安装

忽略

JDK版本切换

如果安装了多个版本的jdk,比如jdk8和jdk11,可以使用如下命令进行切换:

# 切换java版本(输入对应的编号即可)
update-alternatives --config java
# 切换javac版本
update-alternatives --config javac

注意:通过yum install方式安装的jdk会自动出现在/etc/alternatives/中,所以可以直接通过update-alternatives来操作,如果是手动安装的jdk,就需要手动安装到/etc/alternatives/中以方便切换版本,具体步骤参照gpt4的如下回答(来自谷流仓AI):


在Linux中,你可以按照以下步骤将新下载的Java添加到alternatives系统:

  1. 首先,你需要将下载的Java安装包解压到一个目录,例如/usr/lib/jvm/。你可以使用如下命令:
sudo tar -xvf jdk-xx_linux-x64_bin.tar.gz -C /usr/lib/jvm

其中,jdk-xx_linux-x64_bin.tar.gz是你的Java安装包的文件名。

  1. 解压后,你可以使用update-alternatives命令将新的Java添加到alternatives系统:
sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdkxx/bin/java 1
sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/jdkxx/bin/javac 1

其中,/usr/lib/jvm/jdkxx/bin/java/usr/lib/jvm/jdkxx/bin/javac是你新安装的Java的javajavac命令的路径,jdkxx是你的Java版本号。

  1. 添加完成后,你可以使用update-alternatives --config java命令来切换Java版本。

以上就是centos切换jdk版本的过程。

关于/etc/alternatives:

# 查看/usr/bin中java的指向
ll /usr/bin | grep java
# 可以看到如下:java命令指向了/etc/alternatives/java,javac指向了/etc/alternatives/javac
# java -> /etc/alternatives/java
# javac -> /etc/alternatives/javac
# 然后看一下/etc/alternatives/java的指向
ll /etc/alternatives/java
# /etc/alternatives/java -> /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.402.b06-1.el7_9.x86_64/jre/bin/java
# 可以看出来/usr/bin/java最终指向了/usr/lib/jvm/的1.8版本的java

如果不想用/etc/alternatives的话,可以直接修改/usr/bin/java的指向,例如:

ln -sf /usr/local/java/jdk1.8.0_202/bin/java /usr/bin/java

这样就将/usr/bin/java的指向修改为了/usr/local/java/jdk1.8.0_202/bin/java,修改javac同理。

安装maven

参考这篇文章:How to Install Apache Maven on CentOS 7
关于这篇文章的安装jdk的坑,上面已经讲过了,就是要选择devel版本的包,不然不会安装javac

前置条件

需要有JDK环境,参考上面的安装JDK步骤。

安装过程

  1. 下载maven安装包
    可以去阿里云镜像站下载需要的版本:
wget https://mirrors.aliyun.com/apache/maven/maven-3/3.9.6/binaries/apache-maven-3.9.6-bin.tar.gz
  1. 解压
    这里解压到/opt文件夹
# 解压到/opt文件夹
tar xf apache-maven-3.9.6-bin.tar.gz  -C /opt
# 创建软链接,这样之后想要更新maven版本的话,直接修改软链接的指向就行了
ln -s /opt/apache-maven-3.9.6/ /opt/maven
  1. 设置环境变量
vim /etc/profile.d/maven.sh

把如下内容写进去:

export JAVA_HOME=/usr/lib/jvm/jre-openjdk
export M2_HOME=/opt/maven
export MAVEN_HOME=/opt/maven
export PATH=${M2_HOME}/bin:${PATH}
# 赋予执行权限
chmod +x /etc/profile.d/maven.sh
# 使生效
source /etc/profile.d/maven.sh
  1. 验证
# 查看maven版本
mvn -version
# 结果如下所示即为正常
Apache Maven 3.9.6 (bc0240f3c744dd6b6ec2920b3cd08dcc295161ae)
Maven home: /opt/maven
Java version: 1.8.0_402, vendor: Red Hat, Inc., runtime: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.402.b06-1.el7_9.x86_64/jre
Default locale: zh_CN, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-1160.el7.x86_64", arch: "amd64", family: "unix"
  1. 设置maven镜像
    如果不设置镜像的话,从官方仓库下载依赖包会很慢,这里设置阿里云maven仓库镜像:
# 上面设置过M2_HOME变量了,所以直接用
vim $M2_HOME/conf/settings.xml

然后把如下配置插入<mirrors></mirrors>标签内:

<mirror>
     <id>alimaven</id>
     <mirrorOf>central</mirrorOf>
     <name>aliyun maven</name>
     <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
</mirror>

这样镜像仓库就设置好了

<think>好的,我现在需要在CentOS 8上安装配置JDK以及Maven环境。首先,我得回想一下用户提供的引用内容,虽然这些引用是关于CentOS 7的,但可能步骤在CentOS 8上类似,不过需要注意版本差异可能的包管理变化。 首先,安装JDK。用户提到三种不同的配置方式,有的是用OpenJDK,有的是自己下载的JDKCentOS 8可能默认的仓库里有较新的JDK版本,比如JDK 11或17。我应该先检查可用版本。使用dnf search命令查找可用的JDK包,比如dnf search jdk。然后选择适合的版本安装,比如OpenJDK 11或17,或者用户可能需要Oracle JDK?不过OpenJDK更常见,且免费。 安装完成后,配置环境变量。用户的引用中都设置了JAVA_HOMEPATH变量,通常是在/etc/profile或者用户目录的.bash_profile中。但需要确认JDK的实际安装路径。例如,在CentOS 8中,使用dnf安装的OpenJDK可能位于/usr/lib/jvm/目录下,具体路径需要根据安装的版本确定。比如,安装java-11-openjdk-devel后,路径可能是/usr/lib/jvm/java-11-openjdk-11.x.x.x.el8.x86_64。需要验证路径是否存在。 接下来是Maven安装。用户引用的方法是从官网下载压缩包,解压到指定目录,比如/usr/local/maven或者/opt,然后配置MAVEN_HOMEPATH。CentOS 8的默认仓库可能包含Maven,可以用dnf安装,但版本可能较旧。如果用户需要最新版,可能需要手动下载。例如,使用wget下载Apache Maven的tar.gz文件,解压后配置环境变量。 配置环境变量时,需要将JAVA_HOMEMAVEN_HOME添加到/etc/profile或用户的环境文件中,并更新PATH。注意在CentOS中,推荐将环境变量放在/etc/profile.d/下的自定义脚本中,比如创建一个maven.sh或java.sh文件,这样更便于管理。 最后,验证安装,通过java -versionmvn -version检查是否正确安装。需要确保source /etc/profile或者重新登录使配置生效。 可能的问题:用户是否希望用包管理器安装还是手动安装?根据引用中的例子,用户可能倾向于手动安装,但需要确认。此外,权限问题,比如解压到系统目录是否需要sudo。还要注意CentOS 8中dnf代替了yum,但用法类似。 现在,将这些步骤整理成清晰的指导,分步骤说明,并注意路径的正确性。同时,生成相关问题,比如如何选择JDK版本,如何配置多版本JDK,如何升级Maven等。</think>### 在 CentOS 8 上安装配置 JDKMaven 的步骤 #### 一、安装 JDK 1. **选择 JDK 版本** CentOS 8 默认仓库支持 OpenJDK 11/17 或更高版本。若需其他版本(如 Oracle JDK),需手动下载。 ```bash sudo dnf search jdk # 查看可用版本 sudo dnf install java-11-openjdk-devel # 安装 OpenJDK 11 ``` 2. **验证 JDK 安装路径** 安装完成后,JDK 通常位于 `/usr/lib/jvm/` 目录下。例如: ```bash ls /usr/lib/jvm/java-11-openjdk-11.* ``` 3. **配置环境变量** 创建或编辑 `/etc/profile.d/java.sh`,添加以下内容(路径需与实际安装目录一致): ```bash export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-11.0.xx.x.el8.x86_64 export PATH=$PATH:$JAVA_HOME/bin ``` 保存后执行 `source /etc/profile` 或重新登录终端。 4. **验证安装** ```bash java -version # 应输出 OpenJDK 11 版本信息 ``` --- #### 二、安装 Maven 1. **手动安装最新版本** ```bash wget https://dlcdn.apache.org/maven/maven-3/3.9.6/binaries/apache-maven-3.9.6-bin.tar.gz sudo tar -zxvf apache-maven-3.9.6-bin.tar.gz -C /opt/ sudo ln -s /opt/apache-maven-3.9.6 /opt/maven # 创建软链接便于管理 ``` 2. **配置环境变量** 创建或编辑 `/etc/profile.d/maven.sh`,添加以下内容: ```bash export MAVEN_HOME=/opt/maven export PATH=$PATH:$MAVEN_HOME/bin ``` 保存后执行 `source /etc/profile`。 3. **验证安装** ```bash mvn -version # 应输出 Maven 版本及 JDK 信息 ``` --- #### 三、配置注意事项 1. **权限问题** 若手动解压 JDK/Maven 到系统目录(如 `/opt` 或 `/usr/local`),需使用 `sudo` 确保权限正确。 2. **多版本 JDK 管理** 若需切换多个 JDK 版本,可使用 `alternatives` 工具: ```bash sudo alternatives --config java ``` ---
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值