本文目录一览:
- 1、怎么知道Java class文件JDK编译的版本号
- 2、如何查看java的class文件是被哪个版本的jdk编译的?
- 3、java编译,提示JDK版本错误!
- 4、Java如何生成版本号?比如0001 0002 0002
怎么知道Java class文件JDK编译的版本号
查看class文件编译的jdk版本步骤如下:
首先打开cmd命令行窗口,输入如下指令:
会输出一些信息,大致如下:
Compiled from "HtmlCrawer.java"
public class org.eagleeye.html.HtmlCrawer extends java.lang.Object
SourceFile: "HtmlCrawer.java"
minor version: 0
major version: 50//这个便是jdk的版本信息。
jdk的版本可以参考如下对照表:
如何查看java的class文件是被哪个版本的jdk编译的?
使用UE(Ultra Edit)打开.class文件,切换到16进制模式,查看第1行: CA FE BA BE 00 00 00 3200 75 07 00 02 01 00 27 ; ... .. 前8个字节:CA FE BA BE 是固定的后面的4个字节:00 00是次版本号次版本号后面的4个字节:00 32是编译源代码的jdk版本号32(对应十进制的50):JDK1.631(对应十进制的49):JDK1.530(对应十进制的48):JDK1.42F(对应十进制的47):JDK1.3 2E(对应十进制的46):JDK1.2 编译器的jdk版本是1.2 编译器的jdk版本是1.6
java编译,提示JDK版本错误!
错误原因:
类似错误均属于Java版本问题,即JDK版本过低,只要选择相对应的JDK版本编译即可。
48,49,50是Java编译器内部的版本号:
Unsupported major.minor version 51.0 对应于 JDK1.7(JRE1.7)
Unsupported major.minor version 50.0 对应于 JDK1.6(JRE1.6)
Unsupported major.minor version 49.0 对应于 JDK1.5(JRE1.5)
Unsupported major.minor version 48.0 对应于 JDK1.4(JRE1.4)
解决办法:
仅仅按照网上说的设置JAVA_HOME 等方案是不能解决问题的。
下面是我的解决办法:
(1)在eclipse中新增dk1.7的版本
(2)Project - Properties -Java Build Path 右侧窗口 - Libraries 在列表里显示的竟然还是jdk1.6 。
(3)将jdk1.6相关条目选中,然后点右侧按钮 Remove ,将jdk1.6删除。
(4)点右侧 Add Library 弹出对话框,选中jdk1.7的条目,我这里显示的是 JRE System Library 然后点击next。
(5) 在第四步弹出的对话框上,激活 Alternate JRE 选项,并在下拉列表中,选择 jdk1.7 然后点Finish。
(6)在第五步完成后,从Libraries 选项卡切换到 Order and Export 选项卡,并在jar列表中选中 JRE System Library[jdk1.7] 然后 点 ok完成设置。
(7)修改项目启动jdk为1.7;项目右键 - Run As - Run Configuration;选择Jre选项卡,alternate jre选择jre7,点击run即可运行。
总结
其实根本问题还是jre的配置问题。major.minor version,它相当于一个软件的主次版本号,只是在这里是标识的一个java Class的主版本号和次版本号。
Java如何生成版本号?比如0001 0002 0002
首先还是不太明白你说的这个“生成版本号”是什么意思,如果只是生成一个自增序列的话
1、如果有oracle数据库的话可以利用它的序列生成。
2、没有oracle,用redis也行。
3、没有数据库,那就写个文件来存取吧:
public class Test2 {
public static void main(String[] args) throws IOException {
System.out.println(getSequence("d:\\test\\sequence.txt"));
setSequence("d:\\test\\sequence.txt", "");
System.out.println(getSequence("d:\\test\\sequence.txt"));
}
//读取序列
public static String getSequence(String sequenceFile) throws IOException {
FileInputStream fileInputStream = null;
InputStreamReader inputStreamReader = null;
BufferedReader bufferedReader = null;
try {
File file = new File(sequenceFile);
fileInputStream = new FileInputStream(file);
inputStreamReader = new InputStreamReader(fileInputStream);
bufferedReader = new BufferedReader(inputStreamReader);
// 按行读取字符串
String str;
if ((str = bufferedReader.readLine()) != null) {
return str;
}
return null;
} catch (Exception e) {
e.printStackTrace();
return null;
} finally {
if (bufferedReader != null) {
bufferedReader.close();
}
if (inputStreamReader != null) {
inputStreamReader.close();
}
if (fileInputStream != null) {
fileInputStream.close();
}
}
}
//设置序列,如果传入的序列号为空,则在原序列的基础上+1
public static void setSequence(String sequenceFile, String sequence) throws IOException {
if (sequence == null || sequence.isEmpty()) {
String oriSequence = getSequence(sequenceFile);
Objects.requireNonNull(oriSequence);
sequence = String.format("%04d", Integer.valueOf(oriSequence) + 1);
}
FileOutputStream fileOutputStream = null;
OutputStreamWriter outputStreamWriter = null;
BufferedWriter bufferedWriter = null;
try {
File file = new File(sequenceFile);
fileOutputStream = new FileOutputStream(file);
outputStreamWriter = new OutputStreamWriter(fileOutputStream);
bufferedWriter = new BufferedWriter(outputStreamWriter);
bufferedWriter.write(sequence);
} catch (Exception e) {
e.printStackTrace();
} finally {
if (bufferedWriter != null) {
bufferedWriter.close();
}
if (outputStreamWriter != null) {
outputStreamWriter.close();
}
if (fileOutputStream != null) {
fileOutputStream.close();
}
}
}
}
代码又挤在一起了:
读序列:
写序列:
运行结果:
先生成好这个文件:
冲!: