【问题标题】:Java class file JDK versionJava 类文件 JDK 版本
【发布时间】:2013-10-25 02:04:14
【问题描述】:

我需要将更多日志添加到特定 java 模块的几个类(模块已编译,没有可用源)。我已经成功提取了源代码,但是我对使用哪个 JDK 版本来重新编译修改的类感到困惑。

javap -verbose className.class

表演

...
major version: 46
...

46 version 不是表示最初的类是用 JDK 1.2 编译的 但是源文件包含来自 java nio 的导入:

import java.nio.ByteBuffer;

java 5中实现 问题是:怎么可能?

注意事项:
+ 在 open-jdk 1.5 下运行的整个系统
+ 创建模块的日期 ~2006 年

【问题讨论】:

    标签: java compilation .class-file


    【解决方案1】:

    当您使用 -target 命令行开关时,编译器会生成与旧版本兼容的类文件。

    您拥有的文件可能是使用-source 1.2 target 1.2 编译的。兼容性只影响使用的字节码指令,不会阻止您使用更新的 API。

    【讨论】:

    • Joni,所以实际上它意味着为 e.x. 编译的源。在 JDK 1.5 下并为 1.2 设置兼容级别?
    猜你喜欢
    • 2010-11-20
    • 1970-01-01
    • 1970-01-01
    • 2021-06-05
    • 1970-01-01
    • 2019-08-01
    • 1970-01-01
    • 2013-02-27
    • 1970-01-01
    相关资源
    最近更新 更多