Beyond Compare反编译插件提示转换错误
Posted readiay
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Beyond Compare反编译插件提示转换错误相关的知识,希望对你有一定的参考价值。
1、本文档要解决的问题
Beyond Compare是一款文件差异比较软件,java开发的时候,有时候涉及到把class文件反编译查看源码的需求。但是有时候进行class文件反编译成源码的时候会出现以下异常
![技术图片](https://image.cha138.com/20210626/5072453c694643feb755028cf2e19b78.jpg)
出现这个问题的原因是因为反编译的插件底层是使用jad.exe进行反编译的,jad.exe对高版本的jdk支持的不是很好。
2、原版插件下载
登录官网:http://www.scootersoftware.com/download.php?zz=kb_moreformatsv4 找到如下的插件,勾选之后进行下载。
![技术图片](https://image.cha138.com/20210626/6370511e47ff434ba410e080d903a8a6.jpg)
上面的插件下载安装之后,就可以对class文件进行反编译了。但是有个问题,就是上面提到的,对高版本的jdk支持不友好,编译有问题。
3、原版插件目录了解
我们把下载下来的BCFormats.bcpkg插件使用WinRAR软件打开,打开之后发现里面的内容如下
![技术图片](https://image.cha138.com/20210626/a7b95fadc6b14331b4c1381534542d9e.jpg)
打开CLASS_to_JAVA.bat查看内容如下:
![技术图片](https://image.cha138.com/20210626/6106485795614025b33b72e3e6be8c41.jpg)
![技术图片](index_files/aff513f6-3164-4e97-9253-92f15180e9d6.jpg)
从这里可以发现,这个就是调用jad.exe对 class 文件进行反编译,反编译之后的原始内容通过重定向输出流到软件中展示出变异之后的内容,所以从这里我们就可以知道,如果有一个工具可以通过命令行的形式把class文件进行反编译,则我们就可以用这个工具替换jad.exe。幸运的是,procyon-decompiler就是这么一个既支持高版本的jdk又可以通过命令行的形式进行class文件反编译的工具。
4、原版插件修改使用procyon-decompiler代替jad
首先我们下载procyon-decompiler,插件下载地址:https://bitbucket.org/mstrobel/procyon/downloads/。下载下来之后是一个jar包,我们先学习一下这个jar包怎么用。
1
java -jar procyon-decompiler-0.5.36.jar Proxy0.class
从这里可以看出,这个工具运行需要本机安装jdk。作为java开发人员,这个前置需求几乎可以忽略。
我们使用WinRAR打开工具,把jar包拷贝到插件里面
![技术图片](https://image.cha138.com/20210626/b075a6b407fd4e60b9261e6b24983210.jpg)
然后我们在编辑CLASS_to_JAVA.bat,把内容修改成如下内容:
1
java -jar HelpersJavaprocyon-decompiler-0.5.36.jar %1 > %2
然后Beyond Compare从新安装一下插件,就可以正常进行反编译操作了。
![技术图片](http://image.mamicode.com/info/202005/20200504154742946292.png)
5、成果物下载
修改后的插件下载地址:戳这下载修改后的插件
以上是关于Beyond Compare反编译插件提示转换错误的主要内容,如果未能解决你的问题,请参考以下文章
为啥 beyond compare 不能打开java的class文件,提示转换错误
Beyond Compare 4 提示错误“这个授权密钥已被吊销”的解决办法