【错误记录】IntelliJ IDEA 打包包含依赖库的 Jar 包执行报错 ( Invalid signature file digest for Manifest main attribute )

2023-08-31 17:58:35


博客总结 : 核心报错信息如下 :

Error: A JNI error has occurred, please check your installation and try again
Exception in thread “main” java.lang.SecurityException: Invalid signature file digest for Manifest main attributes

jar 包中的签名文件是无效的 , 删除 META-INF 目录下的签名文件即可 ;
打开压缩包 , 删除这两个 签名文件 ;

在这里插入图片描述





一、报错信息



处理依赖库时 , 选择将 依赖库 打包到 Jar 包内 , 配置如下 :

在这里插入图片描述

如果使用第二种方式 , 会在打包时 , 只对核心的主程序代码进行打包 , 将依赖库拷贝到同级目录中 ;

如果这样 , 将程序拷贝到其它目录时 , 还需要单独拷贝依赖库 , 这样操作比较繁琐 ;

这是使用第二种方式 , 输出的 jar 包 , 要独立管理一堆 jar 包 ;

在这里插入图片描述


所需的依赖库 , 都在左侧的 " Extracted ‘xxx’ " 中 , 这样该依赖库就可以被打包到 jar 包中 ;

在这里插入图片描述

打包后的效果是下面的样式 , 一堆的包名文件 ;

在这里插入图片描述

执行上述 jar 程序 , 会报错 ;

在这里插入图片描述

在这里插入图片描述


完整报错信息 :

D:\>java -jar App.main2.jar
Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.SecurityException: Invalid signature file digest for Manifest main attributes
        at sun.security.util.SignatureFileVerifier.processImpl(Unknown Source)
        at sun.security.util.SignatureFileVerifier.process(Unknown Source)
        at java.util.jar.JarVerifier.processEntry(Unknown Source)
        at java.util.jar.JarVerifier.update(Unknown Source)
        at java.util.jar.JarFile.initializeVerifier(Unknown Source)
        at java.util.jar.JarFile.getInputStream(Unknown Source)
        at sun.misc.URLClassPath$JarLoader$2.getInputStream(Unknown Source)
        at sun.misc.Resource.cachedInputStream(Unknown Source)
        at sun.misc.Resource.getByteBuffer(Unknown Source)
        at java.net.URLClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.access$100(Unknown Source)
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        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 sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source)




二、解决方案



核心报错信息 :

Error: A JNI error has occurred, please check your installation and try again
Exception in thread “main” java.lang.SecurityException: Invalid signature file digest for Manifest main attributes

错误:发生了一个JNI错误,请检查您的安装并重试
java.lang.SecurityException: Manifest主属性的签名文件摘要无效

该错误提示很明显 , 就是说 jar 包中的 META-INF 信息签名文件无效 ;


签名文件 无效 , 就不用签名文件 , 直接删除这两个签名文件 ;

使用压缩工具打开 , 这里我使用的是 7-zip 压缩工具打开了 jar 包 , 删除 MANIFEST.MF 和 MSFTSIG.RSA 两个签名文件 ;

在这里插入图片描述
然后再次执行程序 , 程序可以正常运行 ;

更多推荐

Vue之路由及Node.js环境搭建(一起探索新事物)

目录​编辑前言一、Vue之路由1.路由简介1.1什么是路由1.2什么是SPA1.3SPA的实现思路1.4使用路由的优势2.案例演示2.1导入所需的js文件2.2编写案例代码(模拟页面跳转)二、Vue之node.js1.node.js简介1.1什么是node.js1.2node.js的特点1.3什么是npm1.4npm的

79、SpringBoot 整合 R2DBC --- R2DBC 就是 JDBC 的 反应式版本, R2DBC 是 JDBC 的升级版。

★何谓R2DBCR2DBC就是JDBC的反应式版本,R2DBC是JDBC的升级版。R2DBC是ReactiveRelationalDatabaseConnectivity(关系型数据库的响应式连接)的缩写反应式的就是类似于消息发布者和订阅者,有消息就进行推送。R2DBC中DAO接口中方法的返回值是Flux或Mono因此

嵌入式笔试面试刷题(day5 IIC详解)

文章目录前言一、IIC需要几根线分别是什么线二、IIC优势三、IIC可以挂载多少个从设备,主设备1.从设备数量2.主设备数量四、IIC是全双工还是半双工五、SDA和SCL为什么配置为上拉开漏输出模式1.为什么要配置为开漏输出不能是推挽输出a.实现线与功能b.保护设备不会被短路2.上拉电阻的作用a.确保空闲状态保持高电平

Java synchronized关键字常见面试题

1、什么是线程同步,为什么需要线程同步?线程同步是一种机制,用于控制多个线程对共享资源的访问,以防止并发问题。它需要确保在同一时刻只有一个线程可以访问共享资源,以避免数据竞争和不一致性。2、请解释Java中synchronized关键字的作用和用法。synchronized关键字用于实现线程同步。它可以应用于方法或代码

0021Java程序设计-SSM框架图书管理系统

文章目录摘要目录系统设计开发环境摘要伴随着时代的进步,以及科学技术的不断发展,越来越多的人会从图书馆中借阅书籍,从而获得新的知识。但是,传统的图书管理方法有着很多不便之处,而且还容易丢失,因此,很有必要设计出一个易于操作,具有高便捷性,还可以提高工作效率的图书管理系统。该系统采用了Java技术,采用了计算机技术,取代了

python经典百题之请问他多少岁

题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大?方法1:迭代deffind_fifth_person_age_iterative():age=10#第一个

Multitor:一款带有负载均衡功能的多Tor实例创建工具

关于MultitorMultitor是一款带有负载均衡功能的多Tor实例创建工具,Multitor的主要目的是以最快的速度完成大量Tor进程的初始化,并将大量实例应用到我们日常使用的程序中,例如Web浏览器和聊天工具等等。除此之外,在该工具的帮助下,我们还可以在进行渗透测试和对基础设施安全性进行审计时提高隐蔽性和匿名性

4、wireshark使用教程

文章目录一、wireshark简介二、环境三、wireshark抓包三、wireshark过滤器使用一、wireshark简介Wireshark是使用最广泛的一款「开源抓包软件」,常用来检测网络问题、攻击溯源、或者分析底层通信机制。Wireshark抓包原理:单机情况:电脑直连互联网的单机环境。Wireshark直接抓

HR对职业发展进行思考

如果你还没有职业发展方面的思考,请不要怪自己,这很正常。没有谁是一开始就会如此清晰理性地对职业发展进行思考。笔者对职业发展有关话题进行系统性的思考,得益于两本书:第一本是哈佛大学泰勒·本-沙哈尔教授的《幸福的方法》,第二本书是美国学者比尔·博内特和戴夫·伊万斯写的《斯坦福大学人生设计课》,这两本书给了笔者很大的启发,并

【无标题】

未来,该算法可以在低延迟视频编码领域得到广泛应用。例如,该算法可以用于实时视频传输、视频会议、视频监控等场景,以提高视频编码的效率和质量。此外,该算法还可以扩展到其他编码平台,如H.264/AVC、VP9等,以满足不同应用场景的需求。关于每个图和公式的位置,以下是简要说明:图1:位于第2页,显示了所提出的速率控制算法的

MySQL备份与恢复

目录一、数据库备份二、数据备份的重要性三、MySQL完全备份优缺点实例:完全备份MySQL物理冷备份及恢复完全备份指定库中的部分表完全备份MySQL,服务器中所有的库完全备份一个或多个完的库(包括其中所有的表)查看备份文件MySQL完全恢复恢复数据库恢复数据表MySQL增量备份基于位置恢复基于时间点恢复一、数据库备份备

热文推荐