编程检查.class文件(Programmatically inspect .class files

2019-09-02 05:22发布

我工作的地方,我们正在做大量的Java服务和客户用其它各种语言之间的远程对象转移的项目。 鉴于我们目前的限制,我已经决定要看看它会采取基于现有的Java类代码。 基本上,我需要采取.class文件(或它们的集合)解析字节码,以确定所有的数据成员,或许getter / setter方法,然后写的东西,可以在不同的语言输出的代码来创建一个类具有相同结构体。

我不是在寻找的标准反编译等JAD。 我需要能够采取.class文件并创建它的数据成员和方法的对象模型。 这是可能的呢?

Answer 1:

我用BCEL,发现它真的很别扭。 ASM要好得多。 它非常广泛使用的访客(它可以是一个有点混乱),并不会创建一个对象模型。 不是创建一个对象模型,原来是一个奖金,因为你要创建的任何模型是不可能像所有数据的字面解释。



Answer 2:

我已经在过去使用BCEL,这是很容易使用。 这是一个几年前,所以可能会有更好的东西了。

Apache Jakarta的BCEL



Answer 3:

从你的描述,这听起来像简单的反射就足够了。 您可以发现所有类的静态结构,以及访问特定实例的领域。

如果你想翻译方法的说明,我只会转移到BCEL。 (如果这就是你想要什么自动化,祝你好运!)



Answer 4:

我很震惊,没有人提到ASM呢。 这是最好的字节代码库中的钱可以买到。 好吧,就算它是免费的。



Answer 5:

JAD是一个Java反编译器是不允许的编程访问。 这不是现成的了,而且可能不会与Java7字节码新的项目。



Answer 6:

我想了Javassist可能会帮助你。

http://www.jboss.org/javassist/

我从来没有使用它的需要,但如果你给它一个尝试,你让我们知道您的关于它的评论?

虽然我认为它是更多的字节码操作比的.class检查。



文章来源: Programmatically inspect .class files