给定一个带有字节码版本X的Java类文件(ClassName.class)是否有通用的方法将此类文件从字节码版本X表示为字节码版本Y?
假设:
首发后更新:
答案 0 :(得分:3)
对于降级,您可以查看各种方法,以便在Java 1.3 / 1.4中运行Java 5/6代码。请参阅我的回答相关问题Backport Java 5/6 features to Java 1.4?
答案 1 :(得分:2)
您可以使用Apache BCEL
字节代码工程库是 旨在为用户提供方便 分析,创造和分析的可能性 操纵(二进制)Java类文件
BCEL使您可以读取给定版本的类文件,对其进行操作,生成新的类文件流,然后使用低级ClassLoader
API将其加载到VM中。非常繁琐,毫无疑问,我怀疑这会让你尽可能轻松地降级版本。
答案 2 :(得分:1)
没有。虽然更高版本的Java将能够执行该字节码,但您无法升级它:类文件的更高版本具有不同的格式。
你不能降级它,因为没有办法用旧版Java中的其他结构替换丢失的字节码。
[编辑] IIRC,Sun为每个主要版本的Java添加了至少一个新的字节码指令。这通常是主要Java版本的原因:对字节码的更改。
那就是说,试试运气并更改major version of the class file,看看你的新VM是否会加载它。我怀疑它适用于任何复杂的例子,但你可能很幸运。
答案 3 :(得分:1)