基于Linux-2.6.18内核上运行高版本jdk17+程序

1、概述

        Jdk17以上的java程序,一般不能运行内核2.6.18的Linux上,但可以运行在内核2.6.32以上的Linux上,所以,采用chroot隔离环境,把高版本的Linux内核运行在低版本的系统上

2、chroot环境创建

在内核2.6.32Linux上(如centos6.10)上,按如下步骤创建

(1)切换成root账号

(2)mkdir -p  /chroot/centos6(以下部署都以此路径进行说明)

(3)安装基础系统到该目录

使用 yum 的 --installroot 参数:

yum --installroot=/chroot/centos6  install -y \

 bash  coreutils  yum  passwd  sudo  vim-minimal  openssh-clients   iputils  net-tools

(4)挂载必要的虚拟目录

sudo mount --bind /dev  /chroot/centos6/dev

sudo mount --bind /proc /chroot/centos6/proc

sudo mount --bind /sys  /chroot/centos6/sys

(5)进入chroot环境

chroot /chroot/centos6 /bin/bash

(6)退出chroot环境

exit

(7)清理挂载点

sudo umount /chroot/centos6/dev

sudo umount /chroot/centos6/proc

sudo umount /chroot/centos6/sys

(8)打包chroot环境

 tar -czf centos6_chroot.tar.gz -C /chroot/centos6 

这样就可以把 centos6_chroot.tar.gz拷贝到低版本(如内核2.6.18)上,按照上面的步骤进入chroot环境

3、在chroot环境上部署java17+程序

3.1、Jdk安装

(1)下载jdk

https://download.java.net/openjdk/jdk17.0.0.1/ri/openjdk-17.0.0.1+2_linux-x64_bin.tar.gz

(2)将openjdk-17.0.0.1+2_linux-x64_bin.tar.gz,拷贝到/chroot/centos6/opt/

(3)cd  /chroot/centos6/opt/

(4)tar  -zxf openjdk-17.0.0.1+2_linux-x64_bin.tar.gz

(5)进入chroot环境,执行命令:chroot  /chroot/centos6  /bin/bash

(6)cd  /opt/jdk-17/bin

(7)./java  -version

显示版本信息,则jdk可以使用

(8)将jdk添加到path路径

cat > /etc/profile.d/java.sh <<'EOF'

 export  JAVA_HOME=/opt/jdk17

export PATH=$JAVA_HOME/bin:$PATH

echo $PATH

EOF

source  /etc/profile

java  -version

显示版本信息,则jdk安装完成

3.2、Demo测试

        因为springboot3.x至少需要jdk17,所以开发springboot3的demo测试安装的jdk17是否正常(具体参考spring官网怎么生成项目),并打包成demo-0.0.1-SNAPSHOT.jar

java  -jar  demo-0.0.1-SNAPSHOT.jar

出现如图所示界面,则部署成功,后续就可以运行其他的高版本java程序

4、问题

​​​​​​​4.1、java.io.IOException: Function not implemented

问题原因:

 缺少 epoll_create1 的 glibc 支持,而 不是 epoll 本身缺失。

解决方案:

JVM 如下启动参数即可绕过

java -Djava.nio.channels.spi.SelectorProvider=sun.nio.ch.PollSelectorProvider      -jar yourApp.jar

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值