解决 Exception in thread “main“ java.lang.NoClassDefFoundError

解决 Exception in thread “main“ java.lang.NoClassDefFoundError

问题描述

代码在本地 ide 上能跑,但打包后,部署时,执行 java -jar 后出现了以下报错;

Exception in thread "main" java.lang.NoClassDefFoundError: org/springframework/boot/SpringApplication at com.fancier.fancyblog.web.FancyBlogWebApplication.main(FancyBlogWebApplication.java:25) Caused by: java.lang.ClassNotFoundException: org.springframework.boot.SpringApplication at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641) at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525)

解决方案

因为代码是没有问题的,所以只能从maven方面找问题;
执行以下指令,检查 jar 包

jar tf java-project-1.0-SNAPSHOT.jar 

发现 jar 包结构是这样的

com/ # 只有你的代码,没有依赖 META-INF/ 

正确结构因如下,需要包含种种依赖;

BOOT-INF/ BOOT-INF/classes/ #你的代码 BOOT-INF/classes/com/ BOOT-INF/classes/com/fancier/ BOOT-INF/classes/com/fancier/fancyblog/ BOOT-INF/classes/com/fancier/fancyblog/web/ BOOT-INF/classes/com/fancier/fancyblog/web/config/ ... BOOT-INF/lib/ # 依赖 BOOT-INF/lib/spring-boot-2.6.3.jar BOOT-INF/lib/spring-context-5.3.15.jar BOOT-INF/lib/spring-beans-5.3.15.jar BOOT-INF/lib/spring-expression-5.3.15.jar BOOT-INF/lib/spring-boot-autoconfigure-2.6.3.jar BOOT-INF/lib/logback-classic-1.2.10.jar ... 

问题出现的原因是没有引入正确的插件进行打包
因为是 maven 项目,所以必须使用以下的依赖进行打包

<build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build>

引入依赖,clean 后 重新打包,问题就解决了


好的!本次分享到这就结束了
如果对铁汁你有帮助的话,记得点赞👍+收藏⭐️+关注➕
我在这先行拜谢了:)

Read more

【C++】深入拆解二叉搜索树:从递归与非递归双视角,彻底掌握STL容器的基石

【C++】深入拆解二叉搜索树:从递归与非递归双视角,彻底掌握STL容器的基石

【C++】深入拆解二叉搜索树:从递归与非递归双视角,彻底掌握STL容器的基石 * 摘要 * 目录 * 一、概念 * 二、 性能分析 * 三、key结构非递归模拟实现 * 1. 二叉搜索树的插入 * 2. 二叉搜索树的查找 * 3. 二叉搜索树的删除 * 4. 二叉搜索树的中序遍历 * 四、key结构递归的模拟实现 * 1. 递归与非递归二叉搜索树核心操作的对比 * 2. 递归插入 * 3. 递归查找 * 4. 递归删除 * 总结 摘要 二叉搜索树(BST)是一种重要的数据结构,它通过"左子树所有节点值小于根节点,右子树所有节点值大于根节点"的特性实现高效的元素组织。本文详细解析了BST的核心概念、性能特点,并分别通过非递归和递归两种方式完整实现了插入、查找、删除等关键操作,深入探讨了指针引用在递归实现中的巧妙应用,以及两种实现方式在时间复杂度、空间复杂度和适用场景上的差异。 目录

By Ne0inhk
别被“工具凑数”骗了!飞算JavaAI工具箱是真能解决工程难题

别被“工具凑数”骗了!飞算JavaAI工具箱是真能解决工程难题

上周刚用飞算JavaAI专业版的智能引导生成完用户管理Demo,领导又追加了新要求:“补一份项目文档,顺便把代码里的规范问题改改,明天要给客户看”。要是放在以前,写文档至少得熬3小时,改代码规范又得花1小时,但这次我直接打开了飞算的AI工具箱——不到40分钟,所有活儿都搞定了。 很多AI编程工具的“工具箱”都是“凑数”的:要么功能单一,要么解决不了实际问题,但飞算JavaAI专业版的十大工具,是真的能覆盖开发全链路的痛点。作为唯一拿过中国信通院认证的完整工程AI助手,它的工具箱不是“花架子”,而是实实在在的“工程利器”。 一、项目文档生成器:半小时出3万字文档,不用熬夜写注释 之前项目交接写文档,是我最头疼的事:要整理接口参数、画调用链路图、写数据库表说明,一个Demo的文档写下来至少要1天。但飞算的“项目文档生成器”,直接把这活儿变成了“点一下按钮”。 我在IDEA里打开刚生成的用户管理项目,切换到飞算的AI工具箱界面, 找到“项目文档生成器”,选择“深度模式”后点击“运行”。不到30分钟,一份包含接口详情、表结构说明、

By Ne0inhk
OpenClaw × 飞书:保姆级接入指南

OpenClaw × 飞书:保姆级接入指南

文章目录 * OpenClaw × 飞书:保姆级接入指南 * 为什么选择命令行配置? * 前置准备 * 一、创建飞书应用 * 1.1 登录飞书开放平台 * 1.2 创建企业自建应用 * 1.3 获取应用凭证 * 1.4 一键导入权限配置 * 1.5 启用机器人能力 * 1.6 命令行配置 OpenClaw * 1.6.1.安装飞书插件 * 1.6.2 添加飞书渠道 * 1.6.3 重启网关 * 1.7. 配置事件订阅(关键步骤) * 1.8. 发布应用 * 二、授权与测试 * 2.1.

By Ne0inhk