当前位置: 首页 > news >正文

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.MF
  • main 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堆内存中&#xff0c;年轻代和老年代之间存在的对象相互引用&#xff0c;假设现在要进行一次新生代的YGC&#xff0c;但新生代中的对象可能被老年代所引用的&#xff0c;为了找到新生代中的存活对象&#xff0c;不得不遍历整个老年代。这样明显效率很低…...

AI:135-基于卷积神经网络的艺术品瑕疵检测与修复

🚀点击这里跳转到本专栏,可查阅专栏顶置最新的指南宝典~ 🎉🎊🎉 你的技术旅程将在这里启航! 从基础到实践,深入学习。无论你是初学者还是经验丰富的老手,对于本专栏案例和项目实践都有参考学习意义。 ✨✨✨ 每一个案例都附带关键代码,详细讲解供大家学习,希望…...

C++标准头文件汇总及功能说明

文章目录 algorithmbitsetcctypecerrnoclocalecmathcstdioctimedequeiostreamexceptionfstreamfunctionallimitslistmapiosiosfwdsetsstreamstackstdexceptstreambufcstringutilityvectorcwcharcwctype algorithm algorithm头文件是C的标准算法库&#xff0c;它主要用在容器上。…...

glTF 添加数据属性(extras)

使用3D 模型作为可视化界面的一个关键是要能够在3D模型中添加额外的数据属性&#xff0c;利用这些数据属性能够与后台的信息模型建立对应关系&#xff0c;例如后台信息模型是opcua 信息模型的话&#xff0c;在3D模型中要能够包含OPC UA 的NodeId&#xff0c;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年&#xff0c;是一个经典的模型&#xff0c;Yoon Kim将卷积神…...

欧几里得和《几何原本》

欧几里得和《几何原本》 欧几里得&#xff08;Euclid&#xff09;&#xff0c;公元前约300年生于古希腊&#xff0c;被认为是几何学的奠基人之一。他的主要成就是编写了一本名为《几何原本》&#xff08;Elements&#xff09;的著作&#xff0c;这本书成为了几何学的经典教材&a…...

GoMCP框架:用Go快速构建AI工具集成服务器

1. 项目概述&#xff1a;GoMCP&#xff0c;一个为Go语言打造的MCP服务器框架如果你正在用Go语言开发AI应用&#xff0c;并且想让你的Claude Desktop、Cursor或者VS Code Copilot能够调用你写的工具、读取你的数据源&#xff0c;那么你很可能已经接触过Model Context Protocol&a…...

Java 程序员第 4 阶段:入门 Embedding 向量嵌入,弄懂大模型语义底层逻辑

前言Embedding&#xff08;向量嵌入&#xff09; 是大模型理解语义的核心技术&#xff0c;也是构建 RAG、知识库、语义搜索的基础。理解 Embedding 的原理&#xff0c;是进阶大模型开发的关键。本篇文章将深入讲解 Embedding 向量嵌入技术&#xff0c;从原理到 Java 实现&#…...

modbus 512 断线重连 db browser for sqlite

断线重连 private async Task HeartbeatLoopAsync(CancellationToken token) {// 监工一直循环干活&#xff0c;直到工长喊停工&#xff08;token.IsCancellationRequested&#xff09;while (!token.IsCancellationRequested){try{// 每隔一段时间检查一次&#xff08;最少20…...

STM32F103 IAP实战:从Bootloader设计到远程固件更新

1. 为什么你的STM32需要IAP升级&#xff1f; 第一次接触IAP&#xff08;In-Application Programming&#xff09;这个概念时&#xff0c;我正蹲在工厂车间的设备旁边&#xff0c;手里拿着需要升级的STM32板子发愁。产线上30台设备需要更新程序&#xff0c;而每台设备都要拆外壳…...

AI智能体记忆系统设计:基于文件优先与智能压缩的生产级解决方案

1. 项目概述&#xff1a;一个为AI智能体设计的生产级记忆系统如果你正在构建一个需要长期记忆和上下文管理的AI智能体&#xff0c;比如一个能帮你写代码的编程助手&#xff0c;或者一个能处理复杂任务的自动化工作流&#xff0c;那么你肯定遇到过“上下文窗口”这个头疼的问题。…...

OptiSearch:浏览器扩展实现AI与搜索引擎的无缝集成

1. 项目概述&#xff1a;当搜索遇到AI&#xff0c;一次查询&#xff0c;双重答案作为一名长期在信息检索和效率工具领域折腾的开发者&#xff0c;我一直在思考一个问题&#xff1a;我们每天在搜索引擎和AI聊天机器人之间要切换多少次标签页&#xff1f;搜索一个技术问题&#x…...

Claude Code / Cursor 写的代码,你敢直接上线吗?我踩过一次坑,再也不敢

&#x1f449; 这是一个或许对你有用的社群&#x1f431; 一对一交流/面试小册/简历优化/求职解惑&#xff0c;欢迎加入「芋道快速开发平台」知识星球。下面是星球提供的部分资料&#xff1a; 《项目实战&#xff08;视频&#xff09;》&#xff1a;从书中学&#xff0c;往事上…...

构筑数字韧性:从零信任到内生安全,打造面向未来的数字基础设施

1. 从一篇行业评论引发的深度思考&#xff1a;我们该如何构筑数字时代的“安全地基”&#xff1f;前几天&#xff0c;行业媒体EE Times上的一篇旧文被重新翻了出来&#xff0c;标题挺抓人眼球&#xff0c;大致是在讨论某个国家在关键技术领域的主导地位是否面临挑战。抛开其中地…...

麻省理工博士生弃博投身数字人类研究:10年、100亿美元、5万台H100或可实现

【导语&#xff1a;麻省理工学院博士生Isaak Freeman放弃攻读博士学位&#xff0c;投身数字人类研究。他认为人类若保持碳基形态将在智力竞争中被AI淘汰&#xff0c;而将意识迁移到数字基质上是出路&#xff0c;并给出实现数字人类的粗略计算和路线图。】数字人类&#xff1a;从…...

做定制开发的定制软件开发公司平台

在数字化转型浪潮下&#xff0c;“定制软件开发”几乎成了每一家力图通过技术构建壁垒的企业的必选项。然而&#xff0c;一个令人尴尬的现实是&#xff1a;很多企业在数字化上砸了重金&#xff0c;不仅没换来效率&#xff0c;反而陷入了“开发超预算、交付总延期、上线全是坑”…...