You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用jadx反编译528MB大JAR时遇Zip条目数超限问题求助

jadx反编译大Jar文件失败的解决方法

问题背景

尝试反编译一个528MB的large.jar文件时,使用jadx工具出现失败,核心报错为:

  • Zip entries count limit exceeded: 100000:Jar内文件条目数超过jadx默认限制
  • Unknown constant pool tag: 0:尝试解析非class文件(如native库)时出错

完整执行命令及报错信息:

$ du -sch build/*
528M    large.jar
528M    total

$ jadx -d decompiled large.jar
INFO  - loading ...
ERROR - Failed to process zip file: large.jar
java.lang.RuntimeException: Failed to process zip file: large.jar
        at jadx.api.plugins.utils.ZipSecurity.visitZipEntries(ZipSecurity.java:115)
        ...
Caused by: java.lang.IllegalStateException: Zip entries count limit exceeded: 100000, last entry: com/amazonaws/services/identitymanagement/model/UploadSigningCertificateResult.class
        ...
ERROR - Failed to load class data for file: large.jar:META-INF/native/osx/libjansi.jnilib
jadx.plugins.input.java.utils.JavaClassParseException: Unknown constant pool tag: 0
        ...
ERROR - Process error:
java.lang.RuntimeException: Failed to process zip file: large.jar
        ...
Caused by: java.lang.IllegalStateException: Zip entries count limit exceeded: 100000, last entry: com/amazonaws/services/identitymanagement/model/UploadSigningCertificateResult.class
        ...

解决方法

1. 调整jadx的Zip条目限制

jadx默认限制Jar内最多处理100000个条目,可通过JVM参数扩大该限制:

jadx -Djadx.zip.entries.limit=200000 -d decompiled large.jar

数值可根据实际Jar条目数调整(比如用unzip -l large.jar | wc -l查看总条目数)。如果使用jadx GUI,可在启动时添加该JVM参数,或修改jadx配置文件(如config.yml中的zip.entries.limit字段)。

2. 修剪Jar文件,移除非必要内容

解压Jar后删除不需要的文件(如native库、冗余资源、重复依赖),重新打包后再反编译:

# 解压Jar
unzip large.jar -d temp_dir
# 删除native库等非class文件
rm -rf temp_dir/META-INF/native
# 重新打包成精简版Jar
jar cf trimmed.jar -C temp_dir .
# 反编译精简版Jar
jadx -d decompiled trimmed.jar

3. 提取特定模块单独反编译

如果只需要Jar中部分代码,可提取指定包路径下的文件单独打包反编译:

# 提取AWS相关类文件
unzip large.jar com/amazonaws/** -d aws_module
# 打包成单独Jar
jar cf aws_only.jar -C aws_module .
# 反编译该模块
jadx -d decompiled_aws aws_only.jar

4. 更换反编译工具

若jadx仍无法处理,可尝试其他工具:

  • JD-GUI:可视化工具,支持大Jar文件加载
  • Fernflower:IntelliJ IDEA内置的反编译器,命令行使用示例:
    java -jar fernflower.jar large.jar decompiled_dir
    
  • Procyon:针对Java 8+优化的反编译器,命令行使用示例:
    java -jar procyon-decompiler.jar -o decompiled_dir large.jar
    

内容的提问来源于stack exchange,提问作者Geoff Langenderfer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 13:55:36