centos安装JDK和Maven
centos安装JDK和Maven
有时候我们可能会需要直接在centos中用maven编译java项目并运行项目,那么就需要在centos中安装jdk和maven。安装jdk的时候有两种方式:
- 通过yum install
- 下载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编译器的版本:
- 首先查看一下有哪些包可以选择:
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
说明java
和javac
都安装好了。
下面再来尝试一下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系统:
- 首先,你需要将下载的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安装包的文件名。
- 解压后,你可以使用
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的java
和javac
命令的路径,jdkxx
是你的Java版本号。
- 添加完成后,你可以使用
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步骤。
安装过程
- 下载maven安装包
可以去阿里云镜像站下载需要的版本:
wget https://mirrors.aliyun.com/apache/maven/maven-3/3.9.6/binaries/apache-maven-3.9.6-bin.tar.gz
- 解压
这里解压到/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
- 设置环境变量
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
- 验证
# 查看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"
- 设置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>
这样镜像仓库就设置好了