Java【报错 01】Unable to open nested jar file 问题说明及解决方法(仅针对压缩工具 WinRAR)

简介: Java【报错 01】Unable to open nested jar file 问题说明及解决方法(仅针对压缩工具 WinRAR)

1.问题说明

项目部署的时候需要替换 SpringBoot 项目打包好的.jar文件内lib下的.jar文件内的文件,是不是有点儿绕 😄 实际上就是依赖的.jar文件内的数据。特别注意,这里仅针对压缩工具WinRAR,一顿操作之后重新部署报错如下,主要是:

java.lang.IllegalStateException: Failed to get nested archive for entry BOOT-INF/lib/xxx-xxx-1.0.0.jar

java.io.IOException: Unable to open nested jar file ‘BOOT-INF/lib/xxx-xxx-1.0.0.jar’

也就是替换之后的文件出现问题了。

Exception in thread "main" java.lang.IllegalStateException: Failed to get nested archive for entry BOOT-INF/lib/xxx-xxx-1.0.0.jar
        at org.springframework.boot.loader.archive.JarFileArchive.getNestedArchive(JarFileArchive.java:120)
        at org.springframework.boot.loader.archive.JarFileArchive$NestedArchiveIterator.adapt(JarFileArchive.java:274)
        at org.springframework.boot.loader.archive.JarFileArchive$NestedArchiveIterator.adapt(JarFileArchive.java:265)
        at org.springframework.boot.loader.archive.JarFileArchive$AbstractIterator.next(JarFileArchive.java:226)
        at org.springframework.boot.loader.ExecutableArchiveLauncher.createClassLoader(ExecutableArchiveLauncher.java:87)
        at org.springframework.boot.loader.Launcher.launch(Launcher.java:55)
        at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:88)
Caused by: java.io.IOException: Unable to open nested jar file 'BOOT-INF/lib/xxx-xxx-1.0.0.jar'
        at org.springframework.boot.loader.jar.JarFile.getNestedJarFile(JarFile.java:306)
        at org.springframework.boot.loader.jar.JarFile.getNestedJarFile(JarFile.java:292)
        at org.springframework.boot.loader.archive.JarFileArchive.getNestedArchive(JarFileArchive.java:116)
        ... 6 more

2.解决方法

核心是替换jar包文件时压缩方式要用存储,解决步骤分为两步:

  1. 首先要把lib下的jar包拉出来,进行文件替换,压缩方式使用存储;
  2. 然后将jar包再拉到lib下,压缩方式依然使用存储。

如果直接替换lib下jar包内的文件,即便选择的压缩方式是存储,替换后,由于lib下jar有修改,保存时lib下的jar包会进行一次压缩,此时是默认的压缩方式,并不是存储,所以会导致问题。

目录
相关文章
|
5天前
|
消息中间件 分布式计算 Java
Linux环境下 java程序提交spark任务到Yarn报错
Linux环境下 java程序提交spark任务到Yarn报错
16 5
|
4天前
|
域名解析 分布式计算 网络协议
java遍历hdfs路径信息,报错EOFException
java遍历hdfs路径信息,报错EOFException
16 3
|
4天前
|
缓存 Java Linux
java操作hbase报错:KeeperErrorCode=NoNode for /hbase-unsecure/master
java操作hbase报错:KeeperErrorCode=NoNode for /hbase-unsecure/master
12 2
|
5天前
|
Java
java服务调用报错503
java服务调用报错503
15 2
|
5天前
|
JSON Java 数据格式
java调用服务报错400
java调用服务报错400
16 2
|
3天前
|
安全 Java 调度
Java编程时多线程操作单核服务器可以不加锁吗?
Java编程时多线程操作单核服务器可以不加锁吗?
16 2
|
7天前
|
存储 缓存 Java
java线程内存模型底层实现原理
java线程内存模型底层实现原理
java线程内存模型底层实现原理
|
12天前
|
缓存 Java 应用服务中间件
Java虚拟线程探究与性能解析
本文主要介绍了阿里云在Java-虚拟-线程任务中的新进展和技术细节。
|
9天前
|
Java 开发者
Java中的多线程基础与应用
【9月更文挑战第22天】在Java的世界中,多线程是一块基石,它支撑着现代并发编程的大厦。本文将深入浅出地介绍Java中多线程的基本概念、创建方法以及常见的应用场景,帮助读者理解并掌握这一核心技术。
|
5天前
|
Java 调度
Java-Thread多线程的使用
这篇文章介绍了Java中Thread类多线程的创建、使用、生命周期、状态以及线程同步和死锁的概念和处理方法。
Java-Thread多线程的使用