集成环境 ClassNotFound 分析与排查

news2024/12/23 23:37:09

项目场景:

最近项目在集成环境,经常会报 ClassNotFound 异常,
在这里插入图片描述

而在开发环境通过IDEA查看项目,类是不缺的


原因分析:

经过排查,发现是项目中引用的 API jar包更新了,但是集成环境却没有成功更新,所以在项目打包的时候报 ClassNotFound 异常。而没有更新的原因,则是因为虽然 API 更新了,但是其包的版本却没有变。

而对于Maven来说,在构建时,会在本地仓库中查找相应的依赖项。如果本地仓库中已经存在了一个相同版本号的包,Maven会直接使用该包,而不会主动去更新远程仓库获取新的包。只有当本地仓库中不存在相应版本号的包时,Maven才会去远程仓库下载最新的包


解决方案:

1. 清掉本地仓库

最简单粗暴的方法就是清除本地仓库,这样所有的包都会从远程仓库拉取到最新的,自然就能解决这个问题

2. 强制使用远程仓库

在Maven的setting.xml文件中,把本地仓库的设置(如下)去掉,这样构建就只能用远程仓库了

<settings>
    <localRepository>C:\Users\username\.m2\repository</localRepository>
</settings>

深入分析

其实问题的本质还是因为 API 的jar包明明更新了,但是其版本却没更新。

一般来说,版本会在这么几种情况下更新

  • 发布新的功能或修复bug:当开发团队在项目中添加了新的功能或修复了已知的bug时

  • 与其他系统的兼容性要求变化:如果项目依赖于其他系统或库,并且这些系统或库的版本发生了变化,可能需要更新项目的版本来保持与其兼容。这样可以确保在使用项目时不会出现问题或错误。

  • 项目的重要里程碑或发布版本:当项目达到重要里程碑或发布版本时,可以考虑更新版本号。这有助于区分不同版本的项目,并为用户提供更好的使用体验。

然而,目前项目的版本控制基本都在GIT中去维护,而对于POM文件的维护却疏忽了,导致代码一直在更新,但版本号却没更新,这对其使用者而言,是会有很大问题的,很可能导致这些问题

①依赖冲突:当其他模块或项目依赖于这个项目时,它们将根据pom文件中的版本号来确定使用的是哪个版本。如果项目版本没有更新,可能会导致依赖冲突或无法使用最新的特性或修复。

③发布问题:如果你打算将项目发布到远程仓库或共享给他人使用,不更新pom中的版本号可能导致混淆和困惑。其他人可能无法正确地识别和使用你的项目。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1687498.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ATA-2081高压放大器的结构组成及原理是什么

高压放大器是一种电子设备&#xff0c;用于将低电压信号增强到高电压水平&#xff0c;以满足特定应用的需求。它们在各种领域中都有广泛的用途&#xff0c;包括医学成像、科学研究、通信系统和声学应用。下面西安安泰电子来为大家介绍高压放大器的结构组成和工作原理。 高压放大…

kafka Kerberos集群环境部署验证

背景 公司需要对kafka环境进行安全验证,目前考虑到的方案有Kerberos和SSL和SASL_SSL,最终考虑到安全和功能的丰富度,我们最终选择了SASL_SSL方案。处于知识积累的角度,记录一下kafka keberos安装部署的步骤。 机器规划 目前测试环境公搭建了三台kafka主机服务,现在将详细…

国家开放大学Java语言程序设计实验2:分支、循环和跳转语句的使用

作业答案 联系QQ:1603277115 实验目的 通过本实验&#xff0c;了解和掌握分支、循环和跳转语句的使用及常见问题处理。 问题描述 杂物店正在做促销活动&#xff0c;很多商品都在进行特价促销&#xff0c;针对特价商品的购买数量做了限制&#xff0c;具体的促销办法是&#…

基于物理的AlGaN/GaN高电子迁移率晶体管的紧凑直流和交流模型

来源&#xff1a;A Physics-Based Compact Direct-Current and Alternating-Current Model for AlGaN/GaN High Electron obility Transistors&#xff08;中国物理快报 07年&#xff09; 摘要 一套针对 AlGaN/GaN 高电子迁移率晶体管 (HEMT) 的直流和小信号特性的分析模型被…

2024年商业管理与文化传播国际学术会议(ICBMCC 2024)

2024年商业管理与文化传播国际学术会议&#xff08;ICBMCC 2024) 2024 International Conference on Business Management and Cultural Communication 一、【会议简介】 2024年商业管理与文化传播国际学术会议&#xff08;ICBMCC 2024&#xff09;是一次汇集全球商业管理领域…

Java与GO语言对比分析

你是不是总听到go与java种种对比&#xff0c;其中在高并发的服务器端应用场景会有人推荐你使用go而不是 java。 那我们就从两者运行原理和基本并发设计来对比分析&#xff0c;看看到底怎么回事。 运行原理对比 java java 中 jdk 已经帮我们屏蔽操作系统区别。 只要我们下载并…

【MySQL数据库】CRUD 增 删 改 查 超详解,有这一篇就够了!

​ ​ &#x1f525;个人主页&#xff1a; 中草药 &#x1f525;专栏&#xff1a;【MySQL】探秘&#xff1a;数据库世界的瑞士军刀 目录 ⚗️一.CRUD &#x1f9ea;二.新增&#xff08;Create&#xff09; &#x1f9eb;1.基本操作 &#x1f9ec;2.使用SELECT插入 &#x…

【虚拟机软件】 VMware Workstation Pro 17 新建 Linux 虚拟机教程(CentOS 7 版本)

文章目录 下载安装 VMware Workstation Pro 17 软件下载 Linux 的 ISO 映像文件Linux版本选择 新建虚拟机准备配置新建安装 后续设置文章导航 我是一名立志把细节说清楚的博主&#xff0c;欢迎【关注】&#x1f389; ~ 原创不易&#xff0c; 如果有帮助 &#xff0c;记得【点赞…

css动画之hamburgers

动效1 代码如下&#xff1a; <!DOCTYPE html> <html><head><meta charset"utf-8"><title></title></head><body><div><label class"hamburger"><input type"checkbox"><…

Redis主从、哨兵、集群讲解

一、Redis主从 大家在面试中可能经常会被问到Redis的高可用问题。Redis高可用回答包括两个层面&#xff0c;一个就是数据不能丢失&#xff0c;或者说尽量减少丢失 ;另外一个就是保证Redis服务不中断 。 对于尽量减少数据丢失&#xff0c;可以通过AOF和RDB保证。 对于保证服务…

捷报频传 | 北京讯通喜获中国信通院2023“Zero Trust Ready SDP解决方案”证书

中国信息通信研究院&#xff08;以下简称“中国信通院”&#xff09;算网融合团队联合各生态伙伴&#xff0c;共同发起“Zero Trust Ready”项目&#xff0c;推动零信任&#xff08;Zero Trust&#xff09;技术与产业发展。该项目旨在从垂直行业的网络安全需求出发&#xff0c;…

『大模型笔记』从头开始代码构建GPT!

从头开始代码构建GPT! 文章目录 一. 从头开始代码构建GPT!二. 参考文献一. 从头开始代码构建GPT! 我们构建了一个生成式预训练Transformer (GPT),遵循论文《Attention is All You Need》和OpenAI的GPT-2 / GPT-3的方法。我们讨论了与ChatGPT的联系,ChatGPT已经风靡全球。我…

牛马真的沉默了,入职第一天就干活

入职第一天就干活的&#xff0c;就问还有谁&#xff0c;搬来一台N手电脑&#xff0c;第一分钟开机&#xff0c;第二分钟派活&#xff0c;第三分钟干活&#xff0c;巴适。。。。。。 打开代码发现问题不断 读取配置文件居然读取两个配置文件&#xff0c;一个读一点&#xff0c;…

掌握Go语言中的net/http包:编写高性能Web服务

掌握Go语言中的net/http包&#xff1a;编写高性能Web服务 引言HTTP服务器构建基础服务器设置路由与处理函数中间件使用高级配置&#xff08;如TLS/SSL&#xff09; HTTP客户端开发创建与使用HTTP客户端处理响应 高级客户端特性 处理JSON与表单数据接收与解析JSON接收与解析表单…

Langchain:数据连接封装、缓存封装和LCEL学习和探索

&#x1f335; 目录 &#x1f335; &#x1f60b; 数据连接封装 &#x1f354; 文档加载器&#xff1a;Document Loaders 文档处理器&#xff1a;TextSplitter 向量数据库与向量检索 总结 &#x1f349; 缓存封装&#xff1a;Memory &#x1f3d6;️ 对话上下文&#xf…

Docker | 基础指令

环境&#xff1a;centos8 参考&#xff1a; 安装 Docker | Docker 从入门到实践https://vuepress.mirror.docker-practice.com/install/ 安装Docker 卸载旧版本&#xff0c;安装依赖包&#xff0c;添加yum软件源&#xff0c;更新 yum 软件源缓存&#xff0c;安装 docker-ce…

保研笔试复习——nju

文章目录 一、单选计算机网络计算机组成原理数字逻辑电路数据结构操作系统微机系统 多选题计算机网络计算机系统结构操作系统 免责声明&#xff1a;题目源自于网络&#xff0c;侵删。 就在今天2024-5-18&#xff0c;考的题下面的只有一道AVL的原题&#xff0c;其他都不是原题&a…

Python操作MySQL数据库的工具--sqlalchemy

文章目录 一、pymysql和sqlalchemy的区别二、sqlalchemy的详细使用1.安装库2.核心思想3.整体思路4.sqlalchemy需要连接数据库5.使用步骤1.手动提前创建数据库2.使用代码创建数据表3.用代码操作数据表3.1 增加数据3.2 查询数据3.3 删除数据3.4 修改数据 一、pymysql和sqlalchemy…

mysql 按区间统计 3 分钟维度

根据 UNIX_TIMESTAMP 去掉分钟后的的位数 思路如下select UNIX_TIMESTAMP(now()) 当前时间 秒,now() 当前时间,FROM_UNIXTIME(FLOOR(UNIX_TIMESTAMP(CURRENT_TIMESTAMP) / (3 * 60)) * (3 * 60)) 3分钟为分隔去掉多余位数当前时间 秒 当前时间 3分钟为分隔去掉多余…

电磁仿真软件CST六面体网格和六面体TLM网格的区别【仿真入门】

六面体网格&#xff08;1&#xff09; Time Domain Solver中使用的Hexahedral Mesh&#xff01; 网格可以说是为了Maxwell方程式计算&#xff0c;将仿真结构分割成许多小的网格单元。因此&#xff0c;仿真计算中识别的结构是网格结构。 Time Domain Solver中使用的Hexahedra…