Linux 之 JavaEE 定制篇 - 搭建 JavaEE 环境
Linux 之 JavaEE 定制篇 - 搭建 JavaEE 环境
centos 中包含的是 JRE,但没有包含 JDK,也就是说,java 程序可以在 centos 上运行,但是本地无法开发 Java 程序,现象就是命令 java -version
可以查出来版本,但是执行 javac
会提示找不到,因为 javac
就属于 jdk,所以你得在本地安装 jdk 之后再使用 javac
:
yum install java-devel
成功安装之后,直接 rpmrebuild <rpm_name>
即可重新构建,构建结果输出到 /root/rpmbuild/RPMS/x86_64/
目录下
安装 JDK
自带 jdk 安装包
涉及到的几个文件夹需要先创建好,同时需要 root 权限,如果没有 root 权限,就放到别的文件夹。
-
mkdir /opt/jdk
-
mkdir /usr/local/java
-
通过 xftp6 上传到
/opt/jdk
下 -
解压:
tar -xzvf /opt/jdk/jdk-8u291-linux-x64.tar.gz -C /usr/local/java/
-
配置环境变量的配置文件,配置环境变量是为了在任何目录都可以使用 Java,就跟我们在任何目录都可以使用
ls
、pwd
一样。vim /etc/profile
添加以下内容到文件最后(PATH 中间是冒号)
export JAVA_HOME=/usr/local/java/jdk1.8.0_291 export PATH=$JAVA_HOME/bin:$PATH
注意,要把
$PATH
放在后面,不然可能无法生效。 -
重启配置文件,让新的环境变量生效
source /etc/profile
yum 在线安装
执行命令 yum list java*
查看可安装 java 版本
这里我们希望安装 java1.8,因为我们的机器是 64 位的,所以选择安装 java-1.8.0-openjdk-devel.x86_64
。这里有个地方要注意,上图中我用红框圈起来的两个 java 版本,要选择 -devel
的安装,因为这个安装的是 jdk,而那个不带 -devel
的安装完了其实是 jre。
执行命令 yum install -y java-1.8.0-openjdk-devel.x86_64
。执行完后会看见控制台刷出很多输出。耐心等待至自动安装完成。
默认安装到 /usr/lib/jvm
目录,环境变量已经自动配置,不需要再手动配置。通过 rpm -ql java-1.8.0-openjdk-devel.x86_64
也可以看出来。
输入 java -version
查看已安装的 jdk 版本。
默认的 jdk 地址是 /usr/lib/jvm/java
。
在线安装好 JDK 之后,最好立即配置一下 JAVA_HOME
这个环境变量:
-
切换到 root 用户
-
vim /etc/profile
,在最后一行加上export JAVA_HOME=/usr/lib/jvm/java export PATH=$PATH:$JAVA_HOME/bin export PATH=$PATH:$JAVA_HOME/jre/bin
-
执行
source /etc/profile
使配置生效
生效期限:永久有效
生效范围:对所有用户有效
下次查找 JDK 的安装路径,直接执行 echo $JAVA_HOME
即可,注意环境变量名是区分大小写的。
查找 JDK 的安装路径
如果没有配置 JAVA_HOME,怎么办?

其实用 ls -l /usr/bin/java
也行
通过 jps
查看所有的 Java 虚拟机,然后通过 jinfo
查看系统属性,在 sun.boot.class.path
属性中即可看到 jdk 的地址
具体命令看《JVM 性能调优笔记》
为什么设置 JAVA_HOME 无效?
在 /etc/profile
中配置的 Java 环境变量是:
export JAVA_HOME=/usr/lib/jvm/java
export PATH=$PATH:$JAVA_HOME/bin
export PATH=$PATH:$JAVA_HOME/jre/bin
但是实际查看,java 的安装路径确是
[root@iZbp1ag455gf8nrfdeqknwZ jvm]# which java
/usr/bin/java
继续追查
[root@iZbp1ag455gf8nrfdeqknwZ jvm]# ll /usr/bin/java
lrwxrwxrwx 1 root root 22 Dec 6 2022 /usr/bin/java -> /etc/alternatives/java
[root@iZbp1ag455gf8nrfdeqknwZ jvm]# ll /etc/alternatives/java
lrwxrwxrwx 1 root root 73 Dec 6 2022 /etc/alternatives/java -> /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.352.b08-2.el7_9.x86_64/jre/bin/java
[root@iZbp1ag455gf8nrfdeqknwZ jvm]# ll /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.352.b08-2.el7_9.x86_64/jre/bin/java
-rwxr-xr-x 1 root root 8984 Oct 21 2022 /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.352.b08-2.el7_9.x86_64/jre/bin/java
[root@iZbp1ag455gf8nrfdeqknwZ jvm]# cd /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.352.b08-2.el7_9.x86_64/jre/bin/java
-bash: cd: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.352.b08-2.el7_9.x86_64/jre/bin/java: Not a directory
最终指向的是 /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.352.b08-2.el7_9.x86_64/jre/bin/java
这个文件,而不是我们在 PATH
中指定的 $JAVA_HOME/bin
。
解决方法很简单,删掉这两个文件即可:
[root@iZbp1ag455gf8nrfdeqknwZ jvm]# rm -rf /usr/bin/java
[root@iZbp1ag455gf8nrfdeqknwZ jvm]# rm -rf /etc/alternatives/java
再次查看 java 命令,显示结果即正常
[root@iZbp1ag455gf8nrfdeqknwZ jvm]# java -version
openjdk version "1.8.0_352"
OpenJDK Runtime Environment (build 1.8.0_352-b08)
OpenJDK 64-Bit Server VM (build 25.352-b08, mixed mode)
[root@iZbp1ag455gf8nrfdeqknwZ jvm]# which java
/usr/lib/jvm/java/bin/java
安装 Tomcat
自带 tomcat 安装包
涉及到的几个文件夹需要 root 权限,如果没有 root 权限,就放到别的文件夹。
-
mkdir /opt/tomcat
-
mkdir /usr/local/tomcat
-
通过 xftp6 上传到
/opt/tomcat
下 -
解压:
tar -xzvf /opt/tomcat/apache-tomcat-8.5.71.tar.gz -C /usr/local/tomcat
-
开放端口并重启防火墙
firewall-cmd --permanent --add-port=8080/tcp firewall-cmd --reload
-
启动 tocat
cd /usr/local/tomcat/apache-tomcat-8.5.71/bin/ sh startup.sh
-
访问 tomcat,localhost:8080
如果可以成功访问,那就说明 tomcat 配置成功,此外要注意,因为我的宿主机配置了 SSR,会拦截所有的请求,所以如果要在宿主机上访问虚拟机中的 tomcat,需要在 SSR 的 user.rule
文件中配置白名单。
# 我的虚拟机
172.16.20.1 172.16.20.255 direct
在线安装:
用 wget
下载 tomcat 安装包,然后剩下的步骤跟自带 tomcat 安装包是一样的。