本文目錄一覽:
- 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();
}
}
}
}
代碼又擠在一起了:
讀序列:
寫序列:
運行結果:
先生成好這個文件:
沖!:
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/285690.html