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

求问:哪个JD/JD-Eclipse版本可生成带行号的反编译Java代码?

批量反编译Jar并生成带行号和特定注释的源码方案

1. 使用JD-Core命令行工具完成批量反编译

JD-Core是JD系列反编译器的核心命令行版本,支持批量处理Jar文件,生成标准Java源码结构:

  • 下载JD-Core的命令行包(如jd-core-1.1.6.jar)
  • 执行以下命令完成批量反编译:
    java -jar jd-core-1.1.6.jar 你的输入Jar路径 输出目录路径/
    
    该命令会自动保持原Jar内的目录结构,将所有class文件反编译为.java文件。

2. 编写脚本添加行号和底部特定注释

JD-Core生成的源码不含行号和指定注释,可通过脚本批量处理所有.java文件:

示例Python脚本(适配通用场景)

import os

# 配置项,根据你的需求修改
TARGET_DIR = "反编译输出目录/"
# 替换为你需要添加的底部特定注释
CUSTOM_FOOTER = """// Decompiled with Java Decompiler
// Original Class: 对应原类文件路径"""

def process_java_file(file_path):
    # 读取原文件内容
    with open(file_path, 'r', encoding='utf-8') as f:
        raw_lines = f.readlines()
    
    # 为每行添加行号(这里用4位对齐格式,可根据需求调整)
    numbered_content = [f"{line_num:4d} {line}" for line_num, line in enumerate(raw_lines, start=1)]
    # 添加底部注释
    numbered_content.append(f"\n{CUSTOM_FOOTER}\n")
    
    # 写入修改后的内容
    with open(file_path, 'w', encoding='utf-8') as f:
        f.writelines(numbered_content)

# 遍历目录下所有.java文件并处理
for root, _, files in os.walk(TARGET_DIR):
    for file in files:
        if file.endswith(".java"):
            process_java_file(os.path.join(root, file))
  • 将脚本放在反编译输出目录同级,修改TARGET_DIR和CUSTOM_FOOTER为实际内容
  • 运行脚本:python 脚本文件名.py

3. 替代反编译工具:Procyon

如果JD-Core的反编译结果不符合预期,可换用Procyon反编译器,它的命令行同样支持批量处理:

  • 下载procyon-decompiler.jar
  • 执行反编译命令:
    java -jar procyon-decompiler.jar -o 输出目录路径/ 你的输入Jar路径
    
    之后仍用上述脚本添加行号和注释即可。

关键调整点

  • 行号格式:若原文件行号无对齐需求,可将{line_num:4d}改为{line_num}
  • 编码适配:如果反编译文件含非ASCII字符,确保脚本使用对应编码(如GBK)读取/写入
  • 增量处理:若仅需处理新增Jar,可在脚本中添加文件修改时间判断,跳过已处理文件

内容的提问来源于stack exchange,提问作者Luong Pham

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 02:13:19