Java 类文件 JDK 版本

标签 java compilation .class-file

我需要向特定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/

相关文章:

java - 使用 asterisk manager api 接听来电

java - 检查位是否设置为 1

c++ - "Sams teach yourself C"中的示例使用 "fgets"但返回错误

node.js - Node.js 10 的 TypeScript tsconfig 设置?

java - 如何在运行时加载 .class 文件以与 JUnitCore.runclasses() 一起使用

java - jjs.exe 和 ServiceLoader

c++ - 将整个类定义放在 ".h"中是否会使可执行文件更大?

java - 如何从命令行在 Windows 上运行 .class 文件?

java - 如何防止 Eclipse 为每次构建清理 bin 文件夹?

java - 在 Jcreator 中添加 jar