一般来说,一组代码(客户端代码)与另一组代码(API代码)相链接。 Java链接通常在编译时在.java & .class之间或在运行时的.class & .class之间验证。然而,在后一种情况下,验证是在遇到不良引用时(即,它是懒惰的)。如何验证已编译的Java代码之间的链接?
有没有办法强制验证全部一次编译代码与客户端代码和API代码之间的链接?目的是验证客户端代码是否可以与给定版本的API一起工作 - 即使它已经被编译为另一个版本。
(当然,办法之一是反编译和重新编译针对API,但有一个更直接的方法是什么?)
性能不一定是一个主要问题,因为结果可以被记住。在某些情况下,代码量也不一定很大。 – 2010-07-28 20:12:00
好的,很好。然后,您可能希望使用像ASM这样的字节码工程库(参考使用CheckClassAdapter)或BCEL(其中包含JustIce验证程序)在足够的情况下执行验证,或者在需要时扩展它们。我不确定Javassist是否有类似的功能。 – 2010-07-28 20:44:33