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-08 13:14:44

    MySQL 批量修改表名

    功能:将数据库 booksystem 中的表名前缀是 sys_ 开头的表名替换 sys_ 为 qun_

  • 2019-10-08 13:26:19

    详解Linux服务器最大tcp连接数

    1全部作为client端的情况下,最大tcp连接数为65535,这些连接可以连到不同的server ip。 2对server端,通过增加内存、修改最大文件描述符个数等参数,单机最大并发TCP连接数超过10万 是没问题的,国外 Urban Airship 公司在产品环境中已做到 50 万并发 。

  • 2019-10-08 14:09:57

    git创建分支并提交到远程分支

    远程分支的创建,一般都是基于本地分支的。即将本地的某个分支提交到远程,作为远程分支。命令如下:

  • 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