大连公司网站开发,长春是不是要封城了,虚拟主机网站500错误,网站建设手机端天行健#xff0c;君子以自强不息#xff1b;地势坤#xff0c;君子以厚德载物。 每个人都有惰性#xff0c;但不断学习是好好生活的根本#xff0c;共勉#xff01; 文章均为学习整理笔记#xff0c;分享记录为主#xff0c;如有错误请指正#xff0c;共同学习进步。… 天行健君子以自强不息地势坤君子以厚德载物。 每个人都有惰性但不断学习是好好生活的根本共勉 文章均为学习整理笔记分享记录为主如有错误请指正共同学习进步。 文章目录 1. 场景2. 报错3. 分析3.1 打包阶段输出3.2 gitlab-runner配置文件3.3 dockerfile配置 4. 解决 1. 场景
k8s部署Java项目pod启动失败
2. 报错
logs命令查看日志报错如下
[rootk8s-master ~]# kubectl logs sb-dplm-d765487f8-s5qfp -n ns-sb
Error: A JNI error has occurred, please check your installation and try again
Exception in thread main java.lang.UnsupportedClassVersionError: org/springframework/boot/loader/JarLauncher has been compiled by a more recent version of the Java Runtime (class file version 61.0), this version of the Java Runtime only recognizes class file versions up to 52.0at java.lang.ClassLoader.defineClass1(Native Method)at java.lang.ClassLoader.defineClass(ClassLoader.java:763)at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)at java.net.URLClassLoader.defineClass(URLClassLoader.java:468)at java.net.URLClassLoader.access$100(URLClassLoader.java:74)at java.net.URLClassLoader$1.run(URLClassLoader.java:369)at java.net.URLClassLoader$1.run(URLClassLoader.java:363)at java.security.AccessController.doPrivileged(Native Method)at java.net.URLClassLoader.findClass(URLClassLoader.java:362)at java.lang.ClassLoader.loadClass(ClassLoader.java:424)at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)at java.lang.ClassLoader.loadClass(ClassLoader.java:357)at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:495)
[rootk8s-master ~]# 截图
3. 分析
报错内容表示jnijava native interface错误检查是否安装然后重试 个人猜测就是java环境问题无法获取或者使用这个接口去执行java程序 然后网上搜到的说的最多的就是java编译和运行的jdk版本不一致而且他们都是在Windows上遇到的这个问题 对我这个情况来说没办法解决
3.1 打包阶段输出
我尝试在.gitlab-ci.yml文件的两个阶段打包构建镜像中执行查看java版本的命令 即在脚本命令中添加java -version和javac -version 在打包的阶段窗口看到如下java版本为21.0.2 这里打包使用的java版本之所以是21.0.2是因为我在打包阶段未指定镜像它默认会使用gitlab-runner注册时定义的镜像中的jdk
3.2 gitlab-runner配置文件
我去gitlab-runner的配置文件中查看配置文件的配置参数如下可以看到这里使用的是maven镜像的最新版本里面应该默认包含jdk最新版本所以才会输出21.0.2这个版本
3.3 dockerfile配置
而在构建镜像时我构建镜像使用的dockerfile文件中的java镜像版本为jdk8的环境 综上打包和构建镜像时的jdk版本不同导致jar包执行出错
4. 解决
在打包阶段指定maven版本使用adoptopenjdk/maven-openjdk8此版本maven包含jdk8 配置后重新执行 查看如下jdk版本为1.8.0_222与dockerfile中的jdk大版本
构建后重新部署pod即可
感谢阅读祝君暴富