K8S部署Java项目 pod报错 logs日志内容:no main manifest attribute, in app.jar
天行健,君子以自强不息;地势坤,君子以厚德载物。
每个人都有惰性,但不断学习是好好生活的根本,共勉!
文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。
文章目录
- 1. 场景
- 2. 报错
- 3. 分析
- 4. 解决
- 4.2 配置manifest文件
- 4.2 配置指定main class
尝试此篇之前请先看另一篇(推荐):no main manifest attribute, in app.jar
1. 场景
K8S部署Java项目 pod报错
2. 报错
使用log命令查看日志报错如下
kubectl logs podname -n ns-sb
no main manifest attribute, in app.jar
截图

3. 分析
报错表示在app.jar中无法找到主类,也就是说在app.jar中无法识别main方法程序入口
拓展两个词,manifest文件和main class:
manifest文件是一个文本文件,用来描述jar包的元信息、版本信息、作者信息等,manifest文件通常放在jar包的META-INF文件夹下,命名为MANIFEST.MFmain class是一个Java程序的入口,在执行Java程序是会先找到这个类,执行类中的main方法,在jar包中如果没有配置mainfest文件则需要在执行时指定main class,否则无法执行
no main manifest attribute, in app.jar表示既没有配置manifest文件也没有指定main class,接下来我们配置一下即可
4. 解决
4.2 配置manifest文件
在jar包中的META-INF文件夹(没有就创建一个)中创建MANIFEST.MF文件
并在文件中定义内容如下:
Manifest-Version: 1.0 Main-Class: com.gitlab_runner.Application
com.gitlab_runner.Application是main方法所在的类Application的包路径,根据自己的定义
4.2 配置指定main class
在执行jar包命令程序中添加参数指定main class路径
在Dockerfile的Java执行程序命令中添加指定主类配置
java -cp app.jar com.gitlab_runner.Application
-cp表示classpath,就是app.jar的main class路径
Dockerfile文件内容为
#关键字和值之间可以是空格" "也可以是等号"="
#指定基础镜像,以此镜像为基础构建
FROM openjdk:8-jdk-alpine#作者
MAINTAINER hs#设置环境变量
#JAVA_HOME环境变量定义,即配置jdk安装目录路径,需是jdk文件全路径名
ENV JAVA_HOME=/usr/local/java/jdk1.8.0.121
#MAVEN环境变量定义,即maven安装的位置,需是maven全路径名
ENV MAVEN_HOME=/usr/share/maven
#配置环境变量
ENV PATH=$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin
#指定容器的时区
ENV TZ=Asia/Shanghai#复制文件到镜像中,将本地文件或目录复制到镜像指定位置,该操作也在.gitlab-ci.yml文件中脚本进行执行了
COPY app.jar app.jar#时区配置,可省略
#RUN ln -snf /usr/share/zonginfo/$TZ /etc/localtime && echo $TZ > /etc/timezone#容器入口,该命令应该是将每个字符串组合起来,nohub java -jar app.jar
ENTRYPOINT ["nohup","java","-jar","-cp","app.jar","com.gitlab_runner.Application"]#声明要监听的端口(暴露端口,容器内部的端口,这里暂时不用)
EXPOSE 8089
那么我们是maven项目,maven项目配置指定识别的插件即可,在pom中配置插件
感谢阅读,祝君暴富!
相关文章:
K8S部署Java项目 pod报错 logs日志内容:no main manifest attribute, in app.jar
天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…...
SQL实现模糊查询的四种方法总结
目录 一、一般模糊查询 二、利用通配符查询 1. _ 表示任意的单个字符 2. % 表示匹配任意多个任意字符 3. [ ]表示筛选范围 4. 查询包含通配符的字符串 一、一般模糊查询 1. 单条件查询 //查询所有姓名包含“张”的记录select * from student where name like 张 2. 多条…...
爬虫基本库的使用(urllib库的详细解析)
学习爬虫,其基本的操作便是模拟浏览器向服务器发出请求,那么我们需要从哪个地方做起呢?请求需要我们自己构造吗? 我们需要关心请求这个数据结构怎么实现吗? 需要了解 HTTP、TCP、IP层的网络传输通信吗? 需要知道服务器如何响应以及响应的原理吗? 可…...
【PyQt5桌面应用开发】3.Qt Designer快速入门(控件详解)
一、Qt Designer简介 Qt Designer是PyQt程序UI界面的实现工具,可以帮助我们快速开发 PyQt 程序的速度。它生成的 UI 界面是一个后缀为 .ui 的文件,可以通过 pyiuc 转换为 .py 文件。 Qt Designer工具使用简单,可以通过拖拽和点击完成复杂界面…...
react useMemo 用法
1,useCallback 的功能完全可以由 useMemo 所取代,如果你想通过使用 useMemo 返回一个记忆函数也是完全可以的。 usecallback(fn,inputs)is equivalent to useMemo(()> fn, inputs). 区别是:useCallback不会执行第一个参数函数,而是将它返…...
python学习笔记 - 标准库函数
概述 为了方便程序员快速编写Python脚本程序,Python提供了很多好用的功能模块,它们内置于Python系统,也称为内置函数(Built-in Functions,BlF),Python 内置函数是 Python 解释器提供的一组函数,无需额外导…...
校招失败后,在小公司熬了 2 年终于进了字节跳动,竭尽全力....
其实两年前校招的时候就往字节投了一次简历,结果很明显凉了,随后这个理想就被暂时放下了,但是这个种子一直埋在心里这两年除了工作以外,也会坚持写博客,也因此结识了很多优秀的小伙伴,从他们身上学到了特别…...
PYTHON-使用正则表达式进行模式匹配
目录 Python 正则表达式Finding Patterns of Text Without Regular ExpressionsFinding Patterns of Text with Regular ExpressionsCreating Regex ObjectsMatching Regex ObjectsReview of Regular Expression MatchingMore Pattern Matching with Regular ExpressionsGroupi…...
Fiddler工具 — 19.Fiddler抓包HTTPS请求(二)
5、查看证书是否安装成功 方式一: 点击Tools菜单 —> Options... —> HTTPS —> Actions 选择第三项:Open Windows Certificate Manager打开Windows证书管理器。 打开Windows证书管理器,选择操作—>查看证书,在搜索…...
架构设计:流式处理与实时计算
引言 随着大数据技术的不断发展,流式处理和实时计算在各行各业中变得越来越重要。那么什么是流式处理呢?我们又该怎么使用它?流式处理允许我们对数据流进行实时分析和处理,而实时计算则使我们能够以低延迟和高吞吐量处理数据。本…...
Linux系统安装zookeeper
Linux安装zookeeper 安装zookeeper之前需要安装jdk,确认jdk环境没问题之后再开始安装zookeeper 下载zookeeper压缩包,官方下载地址:Apache Download Mirrors 将zookeeper压缩包拷贝到Linux并解压 # (-C 路径)可以解压到指定路径 tar -zxv…...
【前端素材】推荐优质后台管理系统Modernize平台模板(附源码)
一、需求分析 后台管理系统是一种用于管理和控制网站、应用程序或系统后台操作的软件工具,通常由授权用户(如管理员、编辑人员等)使用。它提供了一种用户友好的方式来管理网站或应用程序的内容、用户、数据等方面的操作,并且通常…...
二、Vue组件化编程
2、Vue组件化编程 2.1 非单文件组件 <div id"root"><school></school><hr><student></student> </div> <script type"text/javascript">//创建 school 组件const school Vue.extend({template: <div&…...
JVM跨代引用垃圾回收
1. 跨代引用概述 在Java堆内存中,年轻代和老年代之间存在的对象相互引用,假设现在要进行一次新生代的YGC,但新生代中的对象可能被老年代所引用的,为了找到新生代中的存活对象,不得不遍历整个老年代。这样明显效率很低…...
AI:135-基于卷积神经网络的艺术品瑕疵检测与修复
🚀点击这里跳转到本专栏,可查阅专栏顶置最新的指南宝典~ 🎉🎊🎉 你的技术旅程将在这里启航! 从基础到实践,深入学习。无论你是初学者还是经验丰富的老手,对于本专栏案例和项目实践都有参考学习意义。 ✨✨✨ 每一个案例都附带关键代码,详细讲解供大家学习,希望…...
C++标准头文件汇总及功能说明
文章目录 algorithmbitsetcctypecerrnoclocalecmathcstdioctimedequeiostreamexceptionfstreamfunctionallimitslistmapiosiosfwdsetsstreamstackstdexceptstreambufcstringutilityvectorcwcharcwctype algorithm algorithm头文件是C的标准算法库,它主要用在容器上。…...
glTF 添加数据属性(extras)
使用3D 模型作为可视化界面的一个关键是要能够在3D模型中添加额外的数据属性,利用这些数据属性能够与后台的信息模型建立对应关系,例如后台信息模型是opcua 信息模型的话,在3D模型中要能够包含OPC UA 的NodeId,BrowserName 等基本…...
linux系统消息中间件rabbitmq普通集群的部署
rabbitmq普通集群的部署 普通集群准备环境查询版本对应安装rabbitmq软件启动创建登录用户开启用户远程登录查看端口 部署集群创建数据存放目录和日志存放目录:拷⻉erlang.cookie将其他两台服务器作为节点加⼊节点集群中查看集群状态创建新的队列 普通集群准备环境 配置hosts⽂件…...
TextCNN:文本分类卷积神经网络
模型原理 1、前言2、模型结构3、示例3.1、词向量层3.2、卷积层3.3、最大池化层3.4、Fully Connected层 4、总结 1、前言 TextCNN 来源于《Convolutional Neural Networks for Sentence Classification》发表于2014年,是一个经典的模型,Yoon Kim将卷积神…...
欧几里得和《几何原本》
欧几里得和《几何原本》 欧几里得(Euclid),公元前约300年生于古希腊,被认为是几何学的奠基人之一。他的主要成就是编写了一本名为《几何原本》(Elements)的著作,这本书成为了几何学的经典教材&a…...
WeMod Pro免费解锁终极指南:两种补丁方法完整对比与实战教程
WeMod Pro免费解锁终极指南:两种补丁方法完整对比与实战教程 【免费下载链接】Wemod-Patcher WeMod patcher allows you to get some WeMod Pro features absolutely free 项目地址: https://gitcode.com/gh_mirrors/we/Wemod-Patcher 还在为WeMod Pro的高级…...
如何用PPI网络community分析发现潜在药物靶点?微生信可视化保姆教程
从PPI网络到药物靶点:基于Community分析的生物标记物发现全流程 在生物医学研究的浩瀚海洋中,蛋白质-蛋白质相互作用(PPI)网络犹如一张精密的城市交通图,而community分析则帮助我们识别出其中的"功能街区"。想象一下,当…...
HP-Socket创新项目原型迭代记录:变更、原因与效果
HP-Socket创新项目原型迭代记录:变更、原因与效果 【免费下载链接】HP-Socket High Performance TCP/UDP/HTTP Communication Component 项目地址: https://gitcode.com/gh_mirrors/hp/HP-Socket HP-Socket作为一款高性能TCP/UDP/HTTP通信组件,其…...
vLLM-v0.17.1实战案例:HuggingFace模型无缝接入+多LoRA高效推理
vLLM-v0.17.1实战案例:HuggingFace模型无缝接入多LoRA高效推理 1. vLLM框架简介 vLLM是一个专为大型语言模型(LLM)设计的高性能推理和服务库,由加州大学伯克利分校的天空计算实验室(Sky Computing Lab)开发,现已发展为社区驱动的开源项目。…...
AI显微镜-Swin2SR基础教程:理解‘细节重构技术’对AI生成图的价值
AI显微镜-Swin2SR基础教程:理解‘细节重构技术’对AI生成图的价值 1. 从模糊到高清:AI超分的革命性突破 你是否曾经遇到过这样的情况:AI生成了一张很有创意的图片,但分辨率太低,放大后全是马赛克;或者找到…...
Anomalib Padim模型训练完整踩坑记录:从环境配置、自制数据集准备到ONNX导出一步到位
Anomalib Padim模型实战:工业缺陷检测从零到ONNX部署全指南 工业质检领域正经历一场从传统人工检测到智能算法驱动的变革。想象一下,当生产线上的金属部件以每分钟数十个的速度通过摄像头时,如何确保每个产品表面没有细微划痕、凹陷或腐蚀&am…...
别再折腾虚拟机了!用Docker 5分钟搞定Oracle 10g测试环境(附阿里云镜像源)
5分钟极速部署Oracle 10g:Docker化开发环境实战指南 每次需要搭建Oracle测试环境时,你是否也经历过这样的痛苦?下载几个GB的安装包、配置复杂的系统参数、等待漫长的安装过程,最后可能还会遇到各种依赖问题。作为一名长期与Oracle…...
OneMore插件:让OneNote效率倍增的全方位解决方案
OneMore插件:让OneNote效率倍增的全方位解决方案 【免费下载链接】OneMore A OneNote add-in with simple, yet powerful and useful features 项目地址: https://gitcode.com/gh_mirrors/on/OneMore 当你在OneNote中处理复杂表格时,是否曾因缺乏…...
Systemd配置文件修改后不生效?试试这个命令比重启更高效
Systemd配置热更新实战:如何用daemon-reexec替代服务重启 在Linux系统管理中,systemd作为现代init系统的代表,其配置调整是管理员日常工作的核心部分。但许多工程师在修改/etc/systemd/system.conf这类全局配置后,往往陷入两难&am…...
uniapp中如何用lottie-miniprogram加载json动画?5分钟搞定炫酷效果
Uniapp中5分钟集成Lottie动画:从原理到实战的完整指南 在移动应用开发中,精美的动画效果往往能显著提升用户体验。对于Uniapp开发者来说,Lottie-miniprogram提供了一种高效的方式,可以直接加载设计师导出的JSON动画文件࿰…...
