java.util.zip.ZipException: zip file is empty

2020-03-11 19:40:56

出现这个问题,是我们的jar包是空的,有可能是复制导致的。可以检查下jar包的大小,如果是0,就要看看咋回事了。

一、错误描述

今天,另外一个小组的开发同事,在接手一个离职同事代码的时候,编译不了,请求我帮忙。看了下错误信息如下所示:




具体描述如下所示:


:ui-widget:mergeDebugJniLibFolders

:ui-widget:transformNativeLibsWithMergeJniLibsForDebug

:ui-widget:transformNativeLibsWithStripDebugSymbolForDebug

:ui-widget:transformNativeLibsWithSyncJniLibsForDebug FAILED


FAILURE: Build failed with an exception.


* What went wrong:

Execution failed for task ':ui-widget:transformNativeLibsWithSyncJniLibsForDebug'.

> java.util.zip.ZipException: zip file is empty


* Try:

Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.


* Get more help at https://help.gradle.org


BUILD FAILED in 1s

22 actionable tasks: 18 executed, 4 up-to-date

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

二、解决错误

2.1 错误分析

分析错误日志,java.util.zip.ZipException: zip file is empty 应该是某些jar包或者aar包是为空的,然后去看了下他的项目工程。果然在libs目录下有几个aar和jar包。




然后我将此libs目录打开,查看了下,如下所示:




尼玛,这几个jar包和aar包都是0kb,坑货!


2.2 解决错误

看了下,这几个都是官方对应就有的开发库,为什么还要放到本地?为什么还要弄个0kb的空文件呢?


后来将这几个本地的jar包和aar包删除,然后使用官方自带的maven依赖即解决了,正常编译。


将这几个库的官方版本定义好,如下所示:



然后在项目中引用,如下所示:




三、总结

出现 java.util.zip.ZipException: zip file is empty错误,表示你本地使用的jar包或者aar包可能为空,你可以检查下文件大小,如果为空,可以替换本地的jar包或者aar包为正常的jar包或者aar包,或者如果官方有相关的资源的话直接使用官方的依赖资源即可。





  • 2019-10-09 13:38:20

    NPM依赖包版本号~和^和*的区别

    ~ 会匹配最近的小版本依赖包,比如~1.2.3会匹配所有1.2.x版本,但是不包括1.3.0 ^ 会匹配最新的大版本依赖包,比如^1.2.3会匹配所有1.x.x的包,包括1.3.0,但是不包括2.0.0 * 这意味着安装最新版本的依赖包

  • 2019-10-09 14:39:40

    import双反斜杠\\的意思

    ​ \表示引用根目录下面的PHPEXcel;不用\的话是引用当前目录下面的 PHPExcel

  • 2019-10-09 15:33:31

    nuxt,nuxtjs简单介绍以及使用

    在集成的服务器端框架之间进行选择: 选择您喜欢的 UI 框架: 选择您喜欢的测试框架: 选择你想要的 Nuxt 模式 (Universal or SPA) 添加 axios module 以轻松地将 HTTP 请求发送到您的应用程序中。 添加 EsLint 以在保存时代码规范和错误检查您的代码。 添加 Prettier 以在保存时格式化/美化您的代码。

  • 2019-10-10 00:21:35

    laravel 5.6以上日志理解及日志格式定义

    Laravel/Lumen的日志默认是基于Monolog进行了一层封装,如果要求不高,用起来还是十分容易的,本文基于laravel5.6/Lumen5.6版本进行解说。5.6版对日志系统做了升级,将日志的配置单独放以了config/logging.php 配置文件中,所以现在实用多了。

  • 2019-10-10 10:10:49

    @Scheduled注解各参数详解

    每隔5秒执行一次:*/5 * * * * ? 每隔1分钟执行一次:0 */1 * * * ? 每天23点执行一次:0 0 23 * * ? 每天凌晨1点执行一次:0 0 1 * * ? 每月1号凌晨1点执行一次:0 0 1 1 * ? 每月最后一天23点执行一次:0 0 23 L * ? 每周星期天凌晨1点实行一次:0 0 1 ? * L 在26分、29分、33分执行一次:0 26,29,33 * * * ? 每天的0点、13点、18点、21点都执行一次:0 0 0,13,18,21 * * ?

  • 2019-10-10 11:07:47

    Java8 - Map更优雅的迭代方式:forEach

    用于两个参数之间进行操作的函数式接口是 BiConsumer。这个函数式接口正好用来操作 Map 的 key 和 value。JDK8强化了针对 Map 类的迭代方式,新增了一个默认方法 forEach,它接收一个 BiConsumer 函数。JDK给出的描述如下: