spring boot jar 启动报错 Zip64 archives are not supported

spring boot 版本是 2.1.8.RELEASE,引入以下 phoenix 依赖之后启动报错。

<dependency>
    <groupId>org.apache.phoenix</groupId>
    <artifactId>phoenix-client-hbase-2.4</artifactId>
    <version>5.1.3</version>
</dependency>

错误日志:

PS D:\project\java\zip64\target> java -jar .\zip64-0.0.1-SNAPSHOT.jar
Exception in thread "main" java.lang.IllegalStateException: Failed to get nested archive for entry BOOT-INF/lib/phoenix-client-hbase-2.4-5.1.3.jar
        at org.springframework.boot.loader.archive.JarFileArchive.getNestedArchive(JarFileArchive.java:108)
        at org.springframework.boot.loader.archive.JarFileArchive.getNestedArchives(JarFileArchive.java:87)
        at org.springframework.boot.loader.ExecutableArchiveLauncher.getClassPathArchives(ExecutableArchiveLauncher.java:69)
        at org.springframework.boot.loader.Launcher.launch(Launcher.java:50)
        at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:52)
Caused by: java.io.IOException: Unable to open nested jar file 'BOOT-INF/lib/phoenix-client-hbase-2.4-5.1.3.jar'
        at org.springframework.boot.loader.jar.JarFile.getNestedJarFile(JarFile.java:258)
        at org.springframework.boot.loader.jar.JarFile.getNestedJarFile(JarFile.java:244)
        at org.springframework.boot.loader.archive.JarFileArchive.getNestedArchive(JarFileArchive.java:104)
        ... 4 more
Caused by: java.lang.IllegalStateException: Zip64 archives are not supported
        at org.springframework.boot.loader.jar.CentralDirectoryEndRecord.getNumberOfRecords(CentralDirectoryEndRecord.java:121)
        at org.springframework.boot.loader.jar.JarFileEntries.visitStart(JarFileEntries.java:117)
        at org.springframework.boot.loader.jar.CentralDirectoryParser.visitStart(CentralDirectoryParser.java:85)
        at org.springframework.boot.loader.jar.CentralDirectoryParser.parse(CentralDirectoryParser.java:56)
        at org.springframework.boot.loader.jar.JarFile.<init>(JarFile.java:125)
        at org.springframework.boot.loader.jar.JarFile.<init>(JarFile.java:112)
        at org.springframework.boot.loader.jar.JarFile.createJarFileFromFileEntry(JarFile.java:289)
        at org.springframework.boot.loader.jar.JarFile.createJarFileFromEntry(JarFile.java:266)
        at org.springframework.boot.loader.jar.JarFile.getNestedJarFile(JarFile.java:255)

原因、解决方案

Google 很快就找到了原因,stackoverflow 上有类似的问题 java - Add more than 65535 entries jar in Spring boot - Stack Overflow

第一个回答给出了原因:spring boot 不支持一个 jar 文件中多于 65534(这里应该写错了,应该是 65535) 个文件,并附上了抛异常的代码。

第二个回答是 spring boot 的 issues,有兴趣的可以自己看一下 Support zip64 format executable archives · Issue #2895 · spring-projects/spring-boot (github.com)

第三个回答给出了解决

<think>嗯,用户遇到了解压RAR文件时出现的错误,提示“only plain RAR 2.0 supported”,不支持SFX和卷。我需要帮他们解决这个问题。首先,我得弄清楚这个错误的原因。根据引用[1]和[2],可能是使用的解压工具不支持新版RAR格式或某些特性,比如自解压文件或分卷压缩。用户可能用了unrar或者7z,但版本较旧。 接下来,解决方案应该包括几个步骤。首先,建议安装最新版的RAR官方工具,因为官方软件支持最新格式。然后,如果用户不想用非开源软件,可以尝试其他工具如7-Zip,但需要确认其版本是否支持。另外,检查文件是否为分卷或自解压文件,如果是的话,需要确保所有分卷都存在,或者使用正确的工具处理自解压文件。 还需要考虑用户的操作系统,比如他们是否在使用Linux,因为引用中提到了使用apt安装p7zip-full,这可能是在Ubuntu或Debian系统下。可能需要指导他们如何添加正确的仓库来安装最新软件。此外,用户可能需要转换文件格式,用WinRAR重新压缩成ZIP,或者使用在线转换工具,但要注意安全性。 最后,要提醒用户备份数据,避免解压过程中损坏文件。同时,确认文件来源可靠,避免安全问题。可能需要综合引用中的信息,但用户提供的引用有些是关于ZIP和Ant的,可能不太相关,所以主要参考前两个引用关于安装正确工具的部分。</think>### 解决“only plain RAR 2.0 supported”错误的方法 #### 1. 安装支持新版RAR格式的工具 错误通常由**过时的解压工具**引起。以下分步骤解决: - **Linux系统**: 1. 卸载旧版`unrar`: ```bash sudo apt remove unrar ``` 2. 添加支持RAR 5.0+的仓库(如`non-free`仓库): ```bash sudo add-apt-repository non-free && sudo apt update ``` 3. 安装官方`rar`工具: ```bash sudo apt install rar unrar ``` 4. 使用`unrar`解压: ```bash unrar x 文件名.rar ``` - **Windows/macOS**: 使用官方[WinRAR](https://www.rarlab.com/)或新版[7-Zip](https://www.7-zip.org/)。 #### 2. 检查文件特性 若文件包含**SFX(自解压模块)或分卷压缩**: - **SFX文件**:尝试用WinRAR直接运行`.exe`(需信任来源)[^1]。 - **分卷文件**:确保所有分卷(如`.part1.rar`、`.part2.rar`)在同一目录。 #### 3. 文件格式转换(备选方案) 若无法安装新工具: 1. 在Windows中用WinRAR重新压缩为ZIP格式: $$ \text{压缩算法} \rightarrow \text{ZIP (兼容性强)} $$ 2. 使用在线转换工具(注意文件隐私风险)。 #### 4. 验证文件完整性 损坏文件可能触发此错误。使用以下命令检查: ```bash unrar t 文件名.rar ``` #### 5. 特殊案例处理 - **加密文件**:确保密码正确,部分旧工具可能不支持AES加密。 - **跨平台文件**:Unix权限信息可能导致异常(参考引用[3]),建议在同类系统下解压。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值