查看方式 使用文本编辑器EmEditor以16进制方式打开.class文件 图中红框中的代表版本号52.0 次版本号:00 00   (小数点后面的部分) 主版本号:00 34   (小数点前面的部分) 各个版本的对应关系 JDK版本号 Class版本号 16进制 1.1 45.0 00 00 00 2D 1.2 46.0 00 00 00 2E 1.3 47.0 00 00 00 2F 1.4 48.0 00 00 00 30 1.5 49.0 00 00 00 31 1.6 50.0 00…
方法1: 用二进制的查看方式打开该class文件,参考如下: 只看第一行数据,前面8个字节CA FE BA BE 是固定的,之后4个字节00 00 是次版本号,次版本号后面的4个字节(00 33)  是jdk的版本号. jdk版本号对应关系如下: 版本号 对应十进制 jdk版本号 2E 46 jdk1.2 2F 47 jdk1.3 30 48 jdk1.4 31 49 jdk1.5 32 50 jdk1.6 33 51 jdk1.7 34 52 jdk1.8 方法2: javap -verbos…
Java字节码 先介绍下c语言的编译过程,写好代码用编译器(比如gcc)编译过后是机器能够直接执行的二进制机器码. java也类似这种情况,但是java代码文件编译过后不是任何机器都能识别的机器码,而是只有java虚拟机(JVM)才能识别的java字节码. JVM java的虚拟机,java文件编译后的.class文件就是运行在JVM上的. Java虚拟机有自己完善的硬体架构,如处理器.堆栈.寄存器等,还具有相应的指令系统.JVM屏蔽了与具体操作系统平台相关的信息,使得Java程序只需生成在Ja…
获取JDK源码 先明确OpenJDK和Sun/OracleJDK之间,以及OpenJDK 6.OpenJDK 7.OpenJDK7u和OpenJDK 8等项目之间是什么关系,这有助于确定接下来编译要使用的JDK版本和源码分支. OpenJDK是Sun在2006年末把Java开源而形成的项目,这里的“开源”是通常意义上的源码开放形式,即源码是可被复用的,例如IcedTea.UltraViolet都是从OpenJDK源码衍生出的发行版.但如果仅从“开源”字面意义(开放可阅读的源码)上看,其实Sun自…
俗话说,温故而知新.本打算用dos回忆一下基础知识,没想到把自己绊倒了. 用Dos,当然就要回归原始,用记事本啦.下面用一个小练习,演示我遇到的绊脚石.之后,解决了简直笑死. 报错: Java文件编译出现“编码 GBK 的不可映射字符” (下图不是我的,我的忘记截图了.但是为了方便演示,我在网上找了相同问题的图片,之后的图都是我自己截我自己的了) 在notepad++里面的代码是在Myeclipse里面粘贴过来的,运行过的. 代码实例: import java.io.BufferedReader…
ylbtech-Java-Runoob-高级教程-实例-环境设置实例:1.Java 实例 – 如何编译一个Java 文件? 1.返回顶部 1. Java 实例 - 如何编译 Java 文件  Java 实例 本文我们演示如何编译 HelloWorld.java 文件,其中 Java 代码如下: HelloWorld.java 文件 public class HelloWorld { public static void main(String []args) { System.out.print…
历史文章: [jar]JDK将单个的java文件打包为jar包,并引用到项目中使用[MD5加密] [java]javac命令在win10不可用,提示javac不是内部或外部命令,也不是可运行的程序[解决方法] [javac命令不能使用,提示不是内部命令或外部命令,请查看历史文章] =================需求说明========================== 之前的文章中,仅说明了单个的java文件,没有多的外部依赖的单个java文件编译成class文件. 1.现在有个需求: 在…
详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytpo3 java程序的内存分配 JAVA 文件编译执行与虚拟机(JVM)介绍 Java 虚拟机(JVM)是可运行Java代码的假想计算机.只要根据JVM规格描述将解释器移植到特定的计算机上,就能保证经过编译的任何Java代码能够在该系统上运行.本文首先简要介绍从Java文件的编译到最终执行的过程,随后对JVM规格描述作一说明. 一.Java源文件的编译.下载.解释和执行 Ja…
含package的类文件编译: package com.zhangxueliang.setdemo; public class Demo1 { public static void main(String[] args) { System.out.println("123456"); } } package com.zhangxueliang.setdemo; import java.util.HashSet; /* * 使用HashSet存储自定义对象并遍历 * 通过查看源码发现:…
为什么用java.exe执行编译的类文件的时候,不这样写java Welcome.class 是因为java虚拟机调用Welcome的时候,已经替我们增减了.class,如果你还要写java Welcome.class ,那么实际上你的执行是java Welcome.class.class…