jacodb导入带签名的jar包失败的问题

news2024/11/14 15:31:10

        今天在执行某个项目分析时,100多个jar包只有BC库的三个jar包导入失败。错误如下:

[DefaultDispatcher-worker-1 @coroutine#1] INFO org.jacodb.impl.storage.PersistenceService - Starting app version [1.4]
[DefaultDispatcher-worker-16 @coroutine#150] WARN org.jacodb.impl.fs.JarLocation - error loading classes from jar: bcutil-jdk15on-1.70.jar. returning empty loader
java.lang.IllegalStateException: zip file closed
	at java.base/java.util.zip.ZipFile.ensureOpen(ZipFile.java:840)
	at java.base/java.util.zip.ZipFile.getInputStream(ZipFile.java:369)
	at java.base/java.util.jar.JarFile.getBytes(JarFile.java:800)
	at java.base/java.util.jar.JarFile.checkForSpecialAttributes(JarFile.java:1006)
	at java.base/java.util.jar.JarFile.isMultiRelease(JarFile.java:388)
	at java.base/java.util.jar.JarFile$JarFileEntry.realEntry(JarFile.java:691)
	at java.base/java.util.jar.JarFile.verifiableEntry(JarFile.java:869)
	at java.base/java.util.jar.JarFile.getInputStream(JarFile.java:861)
	at org.jacodb.impl.fs.JarFacade.getBytecode(Jars.kt:84)
	at org.jacodb.impl.fs.JarLocation.getClasses(JarLocationImpl.kt:48)
	at org.jacodb.impl.fs.ByteCodeLoaderImplKt.getSources(ByteCodeLoaderImpl.kt:24)
	at org.jacodb.impl.JcDatabaseImpl$process$3$1$1.invokeSuspend(JcDatabaseImpl.kt:138)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
	at kotlinx.coroutines.internal.LimitedDispatcher.run(LimitedDispatcher.kt:42)
	at kotlinx.coroutines.scheduling.TaskImpl.run(Tasks.kt:95)
	at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:570)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:750)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:677)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:664)

刚开始看到这个错误,以为时多个线程同时加载class文件,之间没同不好,有线程提前关闭了文件导致的。看了读取源码实在没看懂,后续将正常可以加载的jar包对比了下,发现BC库的jar包多了签名文件,删除这几个文件就可以正常加载了。

jar包对比:

红框中的四个文件时jar包的签名文件。

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

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

相关文章

世界上最小,装机量最多的数据库居然是...

最近在根客户沟通数据库选型的时候,聊到了手机应用内置的数据库SQLite。别小看它哈,它可是世界上最小,装机量最多的数据库,只是因为它着实太低调了,低调的连官网都是那么朴素。麻雀虽小,五脏俱全&#xff0…

还在人工代码review?reviewdog和PMD了解一下

前言 代码reivew作为团队协同开发时确保代码质量的手段之一,在软件开发团队中非常常见。特别是对于刚入门不久的团队成员,通过代码review也可一定程度上避免一些低级错误,提升整个部分的代码健壮性。 一般来讲,通过代码review可…

LearnOpenGL-入门章节学习笔记

LearnOpenGL-入门章节学习笔记 简介一、核心模式与立即渲染模式二、扩展三、状态机四、对象 创建窗口一、Main函数——实例化窗口二、Callback Function 回调函数三、processInput 函数 创建三角形一、顶点输入二、顶点着色器三、编译着色器四、片段着色器五、着色器程序六、链…

二叉树——1.翻转二叉树

力扣题目链接 翻转一棵二叉树。 输入: 输出: 可以发现,如何翻转一个二叉树?将每个父节点下的子节点互换就行了,4下面2分支树和7分支树互换,2下面1和3互换,7下面6和9互换。在前面可以自学一下关…

55 函数嵌套定义、可调用对象与修饰器

1 函数嵌套定义 Python 允许函数的嵌套定义,在函数内部可以再定义另外一个函数。 def func(iterable, operator, value): # 自定义函数if operator not in -*/:return operator errordef nested(item): # 嵌套定义函数return eval(repr(item) operator repr(v…

陷入复杂度深渊的ModularRAG..

最近又有一篇ModularRAG的论文,虽然没有太让人汗毛竖起的惊艳,但我想文中的几张配图冷不丁的也着实让部分密集恐惧症患者又一次炸毛了一下吧;)...ps,图画的还是十分规整和可读的,逻辑也很是清晰,为作者的用心点赞&…

如何快速上手Linux操作系统

🐟作者简介:🪴 🐡🐙个人主页🥇:Aic山鱼 🐠WeChat:z7010cyy 🦈系列专栏:🏞️ 前端-JS基础专栏✨前端-Vue框架专栏✨✨前端-Vue3速学专…

OLAP知识地图思考(附地图)

OLAP知识地图思考(附地图) OLAP技术在当今数据驱动的时代具有举足轻重的地位。它的核心技术模块包括数据存储、计算引擎和查询语言等,这些模块的有效协同是实现高效数据分析的基础。然而,OLAP在运维方面面临着诸多挑战&#xff0c…

【驱动篇】龙芯LS2K0300之RTC设备驱动

实验介绍 本次实验是关于pcf8563 RTC模块的驱动移植,大致流程如下: 注册i2c设备驱动编写RTC设备驱动将device和driver驱动部署到开发板并装载,通过hwclock命令来测试 模块连接 VCC接Pin2,GND接Pin1,SCL接Pin16&…

一加Ace3 ColorOS14系统精简列表(免root)

#adb工具 https://www.123pan.com/s/Z3kujv-NHRPA.html 提取码:DZOD 使用: 1. 手机 设置 -- 关于本机 -- 版本信息 -- 版本号 ,点5次 2. 设置 -- 其他设置 -- 开发者选项 -- USB调试 -- 无线调试 3.adb工具 -- adb connect 10.0.0.156:37909&#xff…

opencv-霍夫变换

霍夫变换就是一个可以让计算机学会自己找图形的算法。是图形处理领域内从图像中检测几何形状的基本方法之一。经典霍夫变换用来检测图像中的直线,后来霍夫变换经过扩展可以进行任意型状物体的识别,例如圆和椭圆。 霍夫变换运用两个坐标空间之间的变换&a…

CSP-J复赛 模拟题3

1.匿名信: 题目描述 出于对社会现状的担忧,Alice 决定给市长写一封建议信,考虑到市长的暴脾气,Alice 最终还是决定匿名上书,为了保证自己的绝对神秘,她还会从当天的报纸上将一些单词(或字母)裁剪下来并重…

安装glibc+mysql的权限问题

安装glibc glibc mysql 俗称绿色mysql 安装之前删掉mariadb: 数据库初始化时候,会⾃动找my.cnf配置,但是原有的mariadb配 置⽂件,会失败 [rootmysql3 ~]# ls -l /etc/my.cnf -rw-r--r--. 1 root root 570 6月 8 2017 /etc/my.cnf [rootm…

Vue路由入门学习

文章目录 路由的基本使用1.目标2.作用3.说明4.官网5.VueRouter的使用(52)两个核心步骤 组件的存放目录问题1.组件分类存放目录 路由的封装抽离 Vue中的路由: 路径和组件的 映射关系 路由的基本使用 1.目标 认识插件 VueRouter&#xff0c…

Midjourney仅10分钟搞定⼀套漫画,含MJ提⽰词分享

Midjourney能帮我们画漫画了,你敢信?⼀起来和⽹易设计师学习如何只⽤10分钟,即使你是设计⿇⽠,也能轻轻松松完成⼀张属于你⾃⼰的短⽚⼩漫画!今天就⽤MJ来实战⼀套漫画,包含创作⽤的⼯ 具和提⽰词的应⽤,以前来学习吧! 漫画先看成品图: ▍ Part1你要画个啥? 画漫画当…

复现一下最近学习的漏洞(sqlab 1-10)

第一个问题:为什么不能用#来闭合单引号呢? 在进行URL地址栏传参的时候,是有一套编码规范的。他不会编码英文、数字和某些符号。但是#它会进行编码。也就是%23。(先转ascii码,然后再转十六进制,之后加上%就是…

小白暴力学习001---Vue---第一个Vue

做本文主要是采用Vue3的教程,来源于菜鸟教程, https://www.runoob.com/vue3/vue3-tutorial.html 主要记录从小白开始如何使用Vue建立一个笔记本的网站,并用于记录 基础条件: 有明确的目标有兴趣能使用电脑,会百度 视…

前端的学习-CSS(二)-弹性盒子-flex

一:子元素的属性 order:项目的排列顺序,数值越小,排列越靠前,默认为0。 flex-grow:定义项目的放大比例,默认为 0 ,即如果存在剩余空间,也不放大。 flex-shrink&#xff1…

【链表OJ】常见面试题 2

文章目录 1.[链表分割](https://www.nowcoder.com/practice/0e27e0b064de4eacac178676ef9c9d70?tpId8&&tqId11004&rp2&ru/activity/oj&qru/ta/cracking-the-coding-interview/question-ranking)1.1 题目要求1.2 哨兵位法 2.[链表的回文结构](https://www.…

Spring Boot集成liquibase快速入门Demo

1.什么是liquibase? Liquibase是一个用于跟踪、管理和应用数据库变化的开源的数据库重构工具。它将所有数据库的变化(包括结构和数据)都保存在 changelog 文件中,便于版本控制,它的目标是提供一种数据库类型无关的解决…