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-02-15 10:35:31

    使用ffmpeg转码m3u8并播放

    m3u8是苹果公司开发的一项新型播放格式,这种播放格式支持目前市面的windows、androis、ios设备主流的浏览器,同样的视频文件既可以在flash环境播放,又能在无flash的html5环境播放,它的优势还不止于此,它可以实现多种码率在不同网速下的自动切换,网速好自动切换高清晰度视频,网速慢自动播放低清晰度文件,还可以实现流加密(视频文件本身加密)、分段下载播放、任意时间点拖拽播放、随机视频文件广告插入等等优势,所以公司打算是用m3u8格式作为视频格式。 --------------------- 作者:悠闲咖啡007 来源:CSDN 原文:https://blog.csdn.net/psh18513234633/article/details/79312607 版权声明:本文为博主原创文章,转载请附上博文链接!

  • 2019-02-15 10:36:45

    将MP4转成m3u8

    网上很多垃圾文章推荐segmenter工具,但用的时候,3.5G的ts文件丢了一半的数据,于是想到了ffmpeg转。

  • 2019-02-19 10:01:55

    node下使用open模块在指定浏览器下打开url

    最近在做一个项目的过程中,得到一个远程二维码图片的url,需要扫码登录,每次都是在控制台发url打印出来,再复制粘贴到浏览器的地址栏中打开扫码,整个过程过于繁琐,于是想找一个模块,直接在node下,指定浏览器打开该图片。这样可以省不少事。