以编程方式检查.class文件

时间:2008-10-02 20:20:53

标签: java bytecode decompiling

我正在开发一个项目,我们在Java服务和用其他各种语言编写的客户端之间进行大量的远程对象传输。鉴于我们目前的限制,我决定看看基于现有Java类生成代码需要什么。基本上我需要一个.class文件(或它们的集合)解析字节码以确定所有数据成员和可能的getter / setter然后编写一些可以用不同语言输出代码来创建类的东西具有相同的结构。

我不是在寻找像JAD这样的标准反编译器。我需要能够获取.class文件并创建其数据成员和方法的对象模型。这有可能吗?

6 个答案:

答案 0 :(得分:12)

我使用过BCEL并发现它真的很尴尬。 ASM要好得多。它非常广泛地使用访问者(这可能有点令人困惑)并且不会创建对象模型。不创建对象模型是一个奖励,因为您想要创建的任何模型都不太可能看起来像是对所有数据的字面解释。

答案 1 :(得分:1)

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

Apache Jakarta BCEL

答案 2 :(得分:1)

从您的描述中,听起来simple reflection就足够了。您可以发现类的所有静态结构,以及访问特定实例的字段。

如果您正在尝试翻译方法说明,我只会转到BCEL。 (如果那是你想要自动化的东西,祝你好运!)

答案 3 :(得分:1)

JAD是一个不允许编程访问的java反编译器。它不再容易获得,并且可能不适用于具有Java7字节码的较新项目。

答案 4 :(得分:1)

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

答案 5 :(得分:0)

我认为javassist也可以帮到你。

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

我从来没有需要使用它,但是如果你尝试一下,你会告诉我们你对它的评论吗?

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