Linux 之 JavaEE 定制篇 - 搭建 JavaEE 环境

警告
本文最后更新于 2024-01-25,文中内容可能已过时。

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 权限,就放到别的文件夹。

  1. mkdir /opt/jdk

  2. mkdir /usr/local/java

  3. 通过 xftp6 上传到/opt/jdk

  4. 解压:tar -xzvf /opt/jdk/jdk-8u291-linux-x64.tar.gz -C /usr/local/java/

  5. 配置环境变量的配置文件,配置环境变量是为了在任何目录都可以使用 Java,就跟我们在任何目录都可以使用lspwd一样

    vim /etc/profile

    添加以下内容到文件最后(PATH 中间是冒号)

    1
    2
    
    export JAVA_HOME=/usr/local/java/jdk1.8.0_291
    export PATH=$JAVA_HOME/bin:$PATH

    注意,要把 $PATH 放在后面,不然可能无法生效。

  6. 重启配置文件,让新的环境变量生效

    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 这个环境变量:

  1. 切换到 root 用户

  2. vim /etc/profile,在最后一行加上

    1
    2
    3
    
    export JAVA_HOME=/usr/lib/jvm/java
    export PATH=$PATH:$JAVA_HOME/bin
    export PATH=$PATH:$JAVA_HOME/jre/bin
  3. 执行 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 环境变量是:

1
2
3
export JAVA_HOME=/usr/lib/jvm/java
export PATH=$PATH:$JAVA_HOME/bin
export PATH=$PATH:$JAVA_HOME/jre/bin

但是实际查看,java 的安装路径确是

1
2
[root@iZbp1ag455gf8nrfdeqknwZ jvm]# which java
/usr/bin/java

继续追查

1
2
3
4
5
6
7
8
[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

解决方法很简单,删掉这两个文件即可:

1
2
[root@iZbp1ag455gf8nrfdeqknwZ jvm]# rm -rf /usr/bin/java
[root@iZbp1ag455gf8nrfdeqknwZ jvm]# rm -rf /etc/alternatives/java

再次查看 java 命令,显示结果即正常

1
2
3
4
5
6
[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 权限,就放到别的文件夹。

  1. mkdir /opt/tomcat

  2. mkdir /usr/local/tomcat

  3. 通过 xftp6 上传到/opt/tomcat

  4. 解压:tar -xzvf /opt/tomcat/apache-tomcat-8.5.71.tar.gz -C /usr/local/tomcat

  5. 开放端口并重启防火墙

    1
    2
    
    firewall-cmd --permanent --add-port=8080/tcp
    firewall-cmd --reload
  6. 启动 tocat

    1
    2
    
    cd /usr/local/tomcat/apache-tomcat-8.5.71/bin/
    sh startup.sh
  7.  访问 tomcat,localhost:8080

如果可以成功访问,那就说明 tomcat 配置成功,此外要注意,因为我的宿主机配置了 SSR,会拦截所有的请求,所以如果要在宿主机上访问虚拟机中的 tomcat,需要在 SSR 的user.rule文件中配置白名单。

1
2
# 我的虚拟机
172.16.20.1 172.16.20.255 direct

在线安装:

wget下载 tomcat 安装包,然后剩下的步骤跟自带 tomcat 安装包是一样的。

0%