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

如何在Vim中反编译Java Class文件?求适配高版本Java的可行方案

在Vim中实现兼容高版本Java的反编译功能(媲美IntelliJ)

作为从Vim转投过IntelliJ的用户,太懂你怀念那种一键反编译Class文件的爽感了!JAD确实早就被Java版本迭代甩在身后了,下面给你几个亲测有效的方案,全都是支持Java 8+甚至Java 17+的:

方案一:直接用IntelliJ同款的Fernflower反编译器

IntelliJ默认的反编译引擎就是Fernflower,用它能得到和IDE一模一样的反编译结果,完全兼容高版本Java语法。

步骤很简单:

  1. 先获取Fernflower的Jar包(可以从它的开源仓库编译,或者找现成的发行版)
  2. 在你的~/.vimrc里添加自定义命令和函数:
    " 自定义反编译命令,调用Fernflower
    command! -nargs=1 JadJava call FernflowerDecompile(<f-args>)
    function! FernflowerDecompile(classfile)
        " 替换成你实际的Fernflower Jar路径
        let jar_path = "/Users/yourname/tools/fernflower.jar"
        " 创建临时目录存放反编译结果
        let output_dir = tempname()
        call mkdir(output_dir, "p")
        " 执行反编译命令
        execute "!java -jar " . jar_path . " " . a:classfile . " " . output_dir
        " 找到反编译后的Java文件并打开
        let decompiled_file = glob(output_dir . "/*.java")
        execute "edit " . decompiled_file
    endfunction
    
  3. 以后在Vim里打开.class文件时,只需要输入:JadJava %,就能直接打开反编译好的Java文件了!

方案二:用Vim插件一键搞定——vim-javadecompiler

如果不想自己写函数,这个插件已经封装了Fernflower、Procyon等主流反编译器,配置更省心。

  • 安装(以Vim-Plug为例):
    在~/.vimrc里添加:

    Plug 'dense-analysis/vim-javadecompiler'
    

    然后执行:PlugInstall完成安装。

  • 配置(指定用Fernflower):
    在~/.vimrc里补充:

    let g:javadecompiler_decompiler = 'fernflower'
    let g:javadecompiler_fernflower_path = "/Users/yourname/tools/fernflower.jar"
    
  • 使用:
    打开.class文件后,输入:JavaDecompile,插件会自动帮你反编译并在Vim中打开结果,甚至支持跳转查看关联类。

方案三:备选方案——Procyon反编译器

Procyon也是一款非常优秀的开源反编译器,对Lambda、Stream这类现代Java语法的反编译效果同样出色,如果你想试试不同的反编译结果,可以用它:

同样可以配置自定义命令,或者在vim-javadecompiler里切换成procyon即可。单独配置的话,在~/.vimrc里加:

command! -nargs=1 ProcyonJava call ProcyonDecompile(<f-args>)
function! ProcyonDecompile(classfile)
    let jar_path = "/Users/yourname/tools/procyon-decompiler.jar"
    let output_file = tempname() . ".java"
    execute "!java -jar " . jar_path . " " . a:classfile . " > " . output_file
    execute "edit " . output_file
endfunction

小技巧:添加快捷键提升效率

如果经常需要反编译,可以把命令映射成快捷键,比如在~/.vimrc里加:

nnoremap <leader>jd :JadJava %<CR>

以后打开Class文件,按<leader>jd(默认leader是反斜杠)就能一键反编译,和IntelliJ的操作效率差不多!

内容的提问来源于stack exchange,提问作者金允雄Oliver

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:35:30