1. 程式人生 > >Java環境變數配置&解決版本不一致問題詳解

Java環境變數配置&解決版本不一致問題詳解

晚上琢磨ant的使用,需要用java javac編譯檔案,出現瞭如上問題。網上找了篇文章,再結合自己的情況改動了下,留著備份記錄。

 

1.進行win8下Java環境變數配置,在"系統變數"下進行如下配置:

(1)新建->變數名:JAVA_HOME變數值:F:\Program Files (x86)\Java\jdk1.7.0_67

(2)編輯->變數名:Path在變數值的後面加上:;%JAVA_HOME%\bin;

(3)新建->變數名:CLASSPATH變數值:):F:\Program Files (x86)\Java\jdk1.7.0_67\lib

注:jdk1.6以後的環境變數配置已經沒有那麼複雜了,不在需要配置.;的形式。 

 

問題:解決了問題1之後,對與HelloWord.java 輸入javac HelloWorld之後出現 UnsupportedClassVersionError 錯誤:

這個很明顯是一個版本不支援的問題,經過搜尋發現問題所在:

出現java.lang.UnsupportedClassVersionError 錯誤的原因,是因為我們使用高版本的JDK編譯的Java class檔案試圖在較低版本的JVM上執行,所報的錯誤。

因為,高版本的JDK生成的class檔案使用的格式,可能與低版本的JDK的.class檔案格式不同。這樣,低版本的JVM無法解釋執行這個.class檔案,會丟擲java.lang.UnsupportedClassVersionError不支援的Class版本錯誤。

分別輸入java -version 和javac -version

我的編譯環境是1.7的,而執行環境是1.6的,果然是這個問題。

 

解決方案1:

分析:可能是安裝oracle資料庫在配置jdk路徑之前,導致執行命令呼叫了oracle自帶的jdk,從而導致這個問題。

解決方案:把PATH變數末尾的;%JAVA_HOME%\bin挪到最前面,重啟視窗。(dos啟動時會載入環境變數)

解決結果:

 

解決方案2:

在登錄檔中修改:HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/Java Runtime Environment 改為1.8

再次執行java -version

 

總結:

方案一和二本質上是一樣的,需要保持一致。從這個問題建議大家把path中%JAVA_HOME%\bin給放到最前面,當然你的jdk版本得支援你後面需要安裝的軟體。

 

總結幾個知識點吧~~

JDK、JRE有什麼區別:

Jre   是java   runtime   environment的縮寫,   是java程式的執行環境。既然是執行,當然要包含jvm,也就是大家熟悉的虛擬機器啦, 還有所有java類庫的class檔案,都在lib目錄下打包成了jar。大家可以自己驗證。至於在windows上的虛擬機器是哪個檔案呢?  Java\jdk\ jre\bin\client裡面是不是有一個jvm.dll呢?那就是虛擬機器。

Jdk   是java   development   kit,是java的開發工具包,裡面包含了各種類庫和工具。當然也包括了另外一個Jre--------Java\jre.  那麼為什麼要包括另外一個Jre呢?而且jdk\jre\bin同時有client和server兩個資料夾下都包含一個jvm.dll。   說明是有兩個虛擬機器的。


Java\jdk\bin這個bin下有各種java程式需要用到的命令,與Java\jdk\jre\bin或者Java\jre\bin的bin目錄最明顯的區別就是Java\jdk\bin下才有javac.exe,這一點很好理解,因為 jre只是一個執行環境而已。與開發無關,正因為如此,具備開發功能的jdk自己的jre下才會同時有client性質的jvm和server性質的 jvm, 而僅僅作為執行環境的jre下只需要client性質的jvm.dll就夠了。

我們用的java命令並不是 Java\jdk\bin目錄下的而是Java\jdk\jre\bin目錄下的。不信可以做一個實驗,大家可以把Java\jdk\bin目錄下的java.exe剪下到別的地方再執行 java程式,發現了什麼?一切OK!

如果java為了提供給大多數人使用,他們是不需要jdk做開發的,只需要jre能讓java程式跑起來就可以了,那麼每個客戶還需要手動去設定環境變數多麻煩啊?

所以安裝jre的時候安裝程式自動幫你把jre的java.exe新增到了系統變數中,因此去C:\Windows\system32下面去看看吧,發現有一個java.exe。

轉自:http://www.cnblogs.com/luoyebojue/p/5248767.html