【错误记录】IntelliJ IDEA 导出可执行 jar 包执行报错 ( java.lang.ClassNotFoundException | 打包时没有选择依赖库 )

2023-08-30 16:24:57






一、报错信息



参考 【IntelliJ IDEA】导出可执行 JAR 包 博客 , 从 IntelliJ IDEA 中导出 可执行 JAR 包 ;

执行 菜单栏 / Build / Build Artifacts 选项 , 编译 Module 中配置的 artifacts 项目 ;
在这里插入图片描述

编译完成 artifacts 后 , 进入到 工程目录\out\artifacts\项目名称 目录 ;

执行

java -jar Xxx.jar

命令 , 执行 出错 ;

最终报错 : 报错的原因是没有找到依赖库 , 需要额外设置依赖 ;

java.lang.ClassNotFoundException: com.microsoft.sqlserver.jdbc.SQLServerDriver
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Unknown Source)

在这里插入图片描述





二、解决方案一



出现上述问题原因 , 就是 在 " Project Structure " 配置时 , 没有选择将依赖库一起打包配置 ;

在这里插入图片描述

创建 Artifact 时 , 第一个选项 " extract to the target JAR " 仅导出 目标 jar 包 ;

第二个选项 才是 导出 目标 jar 包 和 所有的依赖项 ;

如果选择第一个选项 , 那么如果有依赖库 , 就会出现依赖没有找到的问题 ;

在这里插入图片描述

这样选择 , 在导出时 , 会自动将依赖库拷贝到 输出目录 中 ;

依赖库会逐个配置到 Class-Path 中 ;

Manifest-Version: 1.0
Main-Class: Xxx
Class-Path: kotlin-stdlib-1.4.32.jar jedis-3.2.0.jar mssql-jdbc-9.4.0.jr
 e8.jar json-20210307.jar commons-pool2-2.6.2.jar kotlin-stdlib-common-1
 .4.32.jar rxjava-2.2.21.jar slf4j-api-1.7.25.jar annotations-13.0.jar r
 eactive-streams-1.0.3.jar commons-math3-3.6.1.jar






三、解决方案二



将所用到的 jar 包配置到 Class-Path 键值对中 , 多个依赖使用空格隔开 ;

Manifest-Version: 1.0
Main-Class: cn.zkhw.schedule.graph.tools.LargeMapCanvas
Class-Path: . mssql-jdbc-9.4.0.jre8.jar rxjava-2.2.21.jar slf4j-api-1.7.25.jar reactive-streams-1.0.3.jar kotlin-stdlib-common-1.4.32.jar kotlin-stdlib-1.4.32.jar json-20210307.jar jedis-3.2.0.jar commons-pool2-2.6.2.jar commons-math3-3.6.1.jar annotations-13.0.jar

只能基于当前的状态进行修补 , 那么将 依赖库的 jar 包拷贝到 导出 jar 包同一级目录 , 执行

java -jar xxx.jar

命令 ;


将依赖库都拷贝到 可执行 jar 包的同级目录 , 直接执行 java -jar xxx.jar 命令 , 程序可以正常执行 ;

在这里插入图片描述

更多推荐

大数据面试题:Flink延迟数据是怎么解决的

最近朋友面试某猪的时候,被问到一个问题答得面试官不太满意,问的是前司数据延迟问题是怎么解决的,我稍作整理。一、什么是延迟数据大数据处理过程中Join的场景太多太多了,几乎所有公司的APP都会涉及到两条流数据之间的维度拼接,将表变宽等场景,避免不了进行多流Join操作。同时join场景中受网络或物理设备等因素影响也有可能

184_Python 在 Excel 和 Power BI 绘制堆积瀑布图

184_Python在Excel和PowerBI绘制堆积瀑布图一、背景在2023年8月22日微软Excel官方宣布:在Excel原生内置的支持了Python。博客原文笔者第一时间就更新到了Excel的预览版,通过了漫长等待分发,现在可以体验了,先来看看效果。在Excel公式选项卡下Python菜单原来的Excel公示栏

使用PageHelper进行分页

使用PageHelper进行分页1.使用SpringBoot2.不使用SpringBoot的实现1.使用SpringBoot要在SpringMVC中使用PageHelper进行分页,你需要完成以下几个步骤:添加PageHelper依赖:在你的项目中添加PageHelper的Maven或Gradle依赖。例如,如果你使用

[效率提升]使用shell脚本完成一些git操作

[效率提升]使用shell脚本完成一些git操作根据分支名自动Add和Commit并Push到远程开发分支例如开发分支名为:feature-xxx功能Commit信息为:xxx功能#!/bin/bash#获取当前分支名称current_branch=$(gitrev-parse--abbrev-refHEAD)echo

计算机毕设 flink大数据淘宝用户行为数据实时分析与可视化

文章目录0前言1、环境准备1.1flink下载相关jar包1.2生成kafka数据1.3开发前的三个小tip2、flink-sql客户端编写运行sql2.1创建kafka数据源表2.2指标统计:每小时成交量2.2.1创建es结果表,存放每小时的成交量2.2.2执行sql,统计每小时的成交量2.3指标统计:每10分钟累计

【含java2023面试题】HashMap、HashTable、ConcurrentHashMap

作为Java中最常用的Map集合,HashMap、HashTable和ConcurrentHashMap都是线程安全的,但它们之间有什么区别呢?在本文中,我们将深入探讨这三种Map集合的区别,并通过Java代码示例来演示它们之间的差异。AI绘画关于SD,MJ,GPT,SDXL百科全书面试题分享点我直达2023Pytho

Java面试八股文宝典:初识数据结构-数组的应用扩展之HashTable

前言上一章我们了解HashMap后,让我们深入研究HashTable,这是另一个键值对存储的数据结构。Hash表是一个非常重要且广泛用于编程中的数据结构,了解其工作原理和用法对于编写高效的程序非常重要。简述HashTable是Java中的一个古老的哈希表实现,它在Java的早期版本中被引入。虽然它在新的Java版本中不

Spark-3.2.4 高可用集群安装部署详细图文教程

目录一、Spark环境搭建-Local1.1服务器环境1.2基本原理1.2.1Local下的角色分布1.3搭建1.3.1安装Anaconda1.3.1.1添加国内阿里源1.3.2创建pyspark环境1.3.3安装spark1.3.4添加环境变量1.3.5启动spark1.3.5.1bin/pyspark1.3.5.2

337.打家劫舍III

337.打家劫舍III-力扣(LeetCode)小偷又发现了一个新的可行窃的地区。这个地区只有一个入口,我们称之为root。除了root之外,每栋房子有且只有一个“父“房子与之相连。一番侦察之后,聪明的小偷意识到“这个地方的所有房屋的排列类似于一棵二叉树”。如果两个直接相连的房子在同一天晚上被打劫,房屋将自动报警。给定

PostgreSQL 数据定义语言 DDL

文章目录表创建主键约束非空唯一约束检查约束外键约束默认值约束触发器表空间构建表空间视图索引索引的基本概念索引的分类创建索引物化视图表创建PostgreSQL表的构建语句与所有数据库都一样,结构如下,其核心在于构建表时,要指定上一些约束,例如主键、非空、唯一、检查、外键、默认值等。CREATETABLEtable_nam

[C++ 网络协议] 多种I/O函数

1.Linux的send&recv函数1.1send函数和recv函数#include<sys/socket.h>ssize_tsend(intsockfd,//套接字文件描述符constvoid*buf,//保存待传输数据的缓冲地址值size_tnbytes,//待传输的字节数intflags//传输数据时指定的可选

热文推荐