字节码到 Java 源代码

2022-09-01 21:01:33

是否可以将文件转换为文件?.class.java

如何做到这一点?

从此选项中提取的代码的正确性如何?


答案 1

这是可能的。你需要一个Java反编译器来做到这一点。

你会发现大多数情况下,它会做得非常好。您将获得一个有效的文件,该文件将编译为该文件,但此文件不一定与原始源代码相同。像循环构造这样的东西可能会以不同的方式出现,任何仅编译时的东西(如泛型和注释)都不会被重新创建。.java.class.java

如果代码已进行模糊处理,则可能会遇到问题。这是一个更改类文件以使其难以反编译的过程。例如,类和变量名称被更改为全部相似,因此您最终会得到类似代码而不是,并且很难弄清楚发生了什么。aa.a(ab)employee.setName(name)

我记得使用JAD来做到这一点,但我不认为这是积极维护的,所以它可能不适用于永远没有版本的Java。谷歌搜索java反编译器会给你很多选择。


答案 2

使用其中一个可用的 Java 反编译器是可能的。由于您正在使用可能已由编译器优化的字节码(内联静态变量,重构控制流等),因此您获得的内容可能与最初编译的代码不完全相同,但它在功能上是等效的。


推荐