重复:

Tool to read and display Java .class versions

如果我有一个已编译的Java类,是否可以仅从类文件中得知其目标版本兼容性是什么? 具体来说,我有许多编译为Java 6的类文件,它们在Java 5下运行,并显示"无法识别的版本"错误。 我希望能够在不运行JVM的情况下查看类文件并查找其目标版本兼容性。 有任何想法吗?

...,当然,如果您愿意使用终端,文件实用程序也将包含在MacOS中。

您可以使用标准JDK随附的javap实用程序。

javap -verbose MyClass

Compiled from"MyClass.java"

public class MyClass extends java.lang.Object

SourceFile:"MyClass.java"

minor version: 3

major version: 45

尽管它可能被认为是"更好"的,但这并不是我一直在寻找的东西。

使用文件程序(在大多数GNU / unix系统上)可以实现相同的结果:文件Foo.class Foo.class:编译的Java类数据,版本45.3 BTW:如何编译以产生此输出(45.3),即.45 jdk1。 x或j2me?

在Wikipedia上有关Java类文件的文章中,有一个主版本号表(例如主版本51 = Java 1.7等)。

可以使用" javap -version target.class"转储确切的版本

我已经在网上找到了它并且可以使用。

Every '.class' file starts off with

the following:

Magic Number [4 bytes]

Version Information [4 bytes]

A hexdump of a '.class' file compiled

with each of the following options

reveals:

javac -target 1.1 ==> CA FE BA BE 00 03 00 2D

javac -target 1.2 ==> CA FE BA BE 00 00 00 2E

javac -target 1.3 ==> CA FE BA BE 00 00 00 2F

javac -target 1.4 ==> CA FE BA BE 00 00 00 30

Perhaps you could use this information

to write your own '.class' file

version checking utility, using Java,

or perhaps a scripting or shell

language ;) !

I hope this helps.

Anthony Borla

来自:http://bytes.com/groups/java/16603-how-determine-java-bytecode-version

太好了,但是我关心的1.5和1.6版本呢?

好像最后一个数字代表最终版本,十六进制31 = dec 49十六进制32 = dec50。那就是我所需要的。 谢谢。

版本1.6 = 32,而1.5为31

我发现这里提供的答案更具启发性。

javap -verbose MyClass =>主要版本49(十进制)= Java 1.5,50 = Java 1.6,51 = Java 1.7,52 = Java 1.8。

Linux / Unix用户在标准工具箱中有一个不错的工具:file实用程序。 现代版本可以检测Java类fersion版本,甚至可以输出已知类文件类型的Java版本。

输出示例:

com/sample/Tracker.class: compiled Java class data, version 45.3

com/sample/TestListener.class: compiled Java class data, version 49.0 (Java 1.5)

它非常适合标准Unix脚本工具链。

摘自:http://twit88.com/blog/2008/09/22/java-check-class-version/

try {

String filename ="C:\\MyClass.class";

DataInputStream in = new DataInputStream(new FileInputStream(filename));

int magic = in.readInt();

if (magic != 0xcafebabe) {

log.info(filename +" is not a valid class!");

}

int minor = in.readUnsignedShort();

int major = in.readUnsignedShort();

log.info(filename +":" + major +" ." + minor);

in.close();

} catch (IOException e) {

log.info("Exception:" + e.getMessage(), e);

}

您可以查看文件中的字节偏移6和7(可能在十六进制转储中),它告诉您使用哪个版本。 我认为Bytecode Visualizer(eclipse插件)可以查看为类文件创建的版本。

进一步阅读

java 编译器获得型号_关于编译器构造:如何找到已编译类的目标Java版本?相关推荐

  1. java课程 数独 文库_一次数独生成及求解方案的剖析(Java实现)

    数独生成及求解方案剖析(Java实现) 关键词 数独9x9 数独生成 数独解题 序言 最近业务在巩固Java基础,编写了一个基于JavaFX的数独小游戏(随后放链接).写到核心部分发现平时玩的数独这个 ...

  2. java lib 不在构建路径里面问题_svn - Eclipse“这个编译单元不在java项目的构建路径上”...

    svn - Eclipse"这个编译单元不在java项目的构建路径上" 我无法在Eclipse上使用自动完成功能. 我正在研究svn上的项目. 我通过进入Eclipse在Eclip ...

  3. linux中python编译器的配置_方舟编译器环境配置及源码编译过程详解

    1)首先将方舟编译器源代码包下载到本地. https://www.openarkcompiler.cn/download/OpenArkCompiler-0.2.tar.gz 2)Ubuntu系统中方 ...

  4. java 线程的构造函数_[c++11]多线程编程(二)——理解线程类的构造函数

    构造函数的参数 std::thread类的构造函数是使用可变参数模板实现的,也就是说,可以传递任意个参数,第一个参数是线程的入口函数,而后面的若干个参数是该函数的参数. 第一参数的类型并不是c语言中的 ...

  5. java面试难吗_面试两个月,整理了今年的最新java面试题,你看行吗?

    金九银十已经过去大半,整理一波今年的新款面试题,最近想跳槽的朋友可以先来刷一波题,包含java基础,多线程,JVM,设计模式,并发,数据库等方面.看看你了解的又有多少呢? 基础面试题 为什么重写equ ...

  6. java 最大子数组_求一个数组中子数组的最大和算法(Java实现)

    前几天在微信订阅号"待字闺中"中看到的一篇文章<小技巧求一个数组中子数组的最大和>,提供下Java的实现,并且在对题目做下小修改,本来打算直接在微信里直接回复,但是发现 ...

  7. java 并发 面试题_阿里面试官总结10个经典技术题:Java多线程与并发面试题

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 5,有哪些不同的线程生命周期? 当我们在Java程序中新建一个线程时,它的状态是New.当我们调用线程的start()方法时,状态被改变为Runnable ...

  8. java报错空指针异常_夯实基础:认识一下这10 个深恶痛绝的 Java 异常

    异常是 Java 程序中经常遇到的问题,我想每一个 Java 程序员都讨厌异常,一 个异常就是一个 BUG,就要花很多时间来定位异常问题. 什么是异常及异常的分类请看这篇文章:异常小结:上一张图搞清楚 ...

  9. java 分治法排序_分治法实现1-N的数字按字典序全排列组合 Java语言

    package 分治法; import java.util.Arrays; /* * 将数字 1 - n进行全排列 按字典序从小到大输出 * 如 1 - 3 * 123 132 213 231 312 ...

最新文章

  1. 暴雪战斗公式——除法公式的精髓
  2. C语言的补码表示和unsigned及signed的转换
  3. 自动化测试,从入门到放弃
  4. 31岁负债59万(房贷27万,私人借款32万),该怎么办?
  5. python编程理论_Python并发编程理论篇,来看看
  6. 释放囚犯(洛谷-P1622)
  7. 延时摄影制作软件——GlueMotion for Mac支持m1
  8. Norton AntiVirus (诺顿杀毒)v9.0 简体中文企业版
  9. 【虚拟机装黑苹果(第三弹)】macOS安装镜像格式转换(dmg转iso,非UltraISO方法)
  10. xp系统打印机服务器报错,WinXP系统打印机显示Spoolsv.exe 应用程序错误的解决方法...
  11. 计算机里不显示硬盘图标,Win7不显示硬盘图标怎么办?不显示硬盘图标修复方法...
  12. Oracle Analyze
  13. 【20210823】学习本不应该痛苦人生其实是一种享受
  14. 前端json对比工具
  15. 川崎机器人零点调整_FANUC机器人简易零点标定和零点位置标定
  16. 贵州六盘水市新农合一卡通工作启动
  17. vue数组转换成对象
  18. tp6验证参数的几种方式详解
  19. 2021年高处安装、维护、拆除考试资料及高处安装、维护、拆除模拟考试题
  20. 江阴工控机服务器维修,西门子工控机上电进不了系统界面维修

热门文章

  1. 存储过程学习三(创建存储过程实例)
  2. iwconfig的用法
  3. CSP认证201503-1 图像旋转[C++题解]:模拟
  4. python报错TabError: inconsistent use of tabs and spaces in indentation解决方案
  5. javawhile语句的用法例子_Python语句之循环
  6. 学python需要记笔记吗_自学python需要做什么笔记
  7. docker 安装nacos_「Java Spring Cloud 实战之路」 使用nacos配置网关
  8. java如何让一个对象为null_将Java对象设置为null会不会做任何事情?
  9. 不用python编程,制作词云图
  10. java c3p0 配置文件_【c3p0】 C3P0的三种配置方式以及基本配置项详解