我需要向特定java模块的几个类添加更多日志(模块已编译,没有可用的源)。我已经成功提取了源代码,但我对使用哪个 JDK 版本来重新编译修改后的类感到困惑。
javap -verbose className.class
显示
...
major version: 46
...
46 版本
并不意味着最初的类是使用JDK 1.2编译的
但源文件包含从 java nio 导入:
import java.nio.ByteBuffer;
在java 5中实现 问题是:怎么可能?
注释:
+整个系统在 open-jdk 1.5 下运行
+ 模块创建日期 ~2006 年
最佳答案
当您使用 -target 命令行开关时,编译器会生成与旧版本兼容的类文件。
您拥有的文件可能是使用-source 1.2 target 1.2
编译的。兼容性仅影响使用的字节码指令,它不会阻止您使用更新的 API。
关于Java 类文件 JDK 版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17292108/