Java环境变量配置&解决版本不一致问题 (转)
晚上琢磨ant的使用,需要用java javac編譯文件,出現(xiàn)了如上問(wèn)題。網(wǎng)上找了篇文章,再結(jié)合自己的情況改動(dòng)了下,留著備份記錄。
1.進(jìn)行win8下Java環(huán)境變量配置,在"系統(tǒng)變量"下進(jìn)行如下配置:
(1)新建->變量名:JAVA_HOME變量值:F:Program Files (x86)Javajdk1.7.0_67
(2)編輯->變量名:Path在變量值的后面加上:;%JAVA_HOME%in;
(3)新建->變量名:CLASSPATH變量值:):F:Program Files (x86)Javajdk1.7.0_67lib
注:jdk1.6以后的環(huán)境變量配置已經(jīng)沒(méi)有那么復(fù)雜了,不在需要配置.;的形式。
問(wèn)題:解決了問(wèn)題1之后,對(duì)與HelloWord.java 輸入javac HelloWorld之后出現(xiàn)UnsupportedClassVersionError錯(cuò)誤:
這個(gè)很明顯是一個(gè)版本不支持的問(wèn)題,經(jīng)過(guò)搜索發(fā)現(xiàn)問(wèn)題所在:
出現(xiàn)java.lang.UnsupportedClassVersionError 錯(cuò)誤的原因,是因?yàn)槲覀兪褂酶甙姹镜腏DK編譯的Java class文件試圖在較低版本的JVM上運(yùn)行,所報(bào)的錯(cuò)誤。
因?yàn)椋甙姹镜腏DK生成的class文件使用的格式,可能與低版本的JDK的.class文件格式不同。這樣,低版本的JVM無(wú)法解釋執(zhí)行這個(gè).class文件,會(huì)拋出java.lang.UnsupportedClassVersionError不支持的Class版本錯(cuò)誤。
分別輸入java -version 和javac -version
我的編譯環(huán)境是1.7的,而運(yùn)行環(huán)境是1.6的,果然是這個(gè)問(wèn)題。
解決方案1:
分析:可能是安裝oracle數(shù)據(jù)庫(kù)在配置jdk路徑之前,導(dǎo)致運(yùn)行命令調(diào)用了oracle自帶的jdk,從而導(dǎo)致這個(gè)問(wèn)題。
解決方案:把PATH變量末尾的;%JAVA_HOME%in挪到最前面,重啟窗口。(dos啟動(dòng)時(shí)會(huì)加載環(huán)境變量)
解決結(jié)果:
解決方案2:
在注冊(cè)表中修改:HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/Java Runtime Environment 改為1.8
再次運(yùn)行java -version
總結(jié):
方案一和二本質(zhì)上是一樣的,需要保持一致。從這個(gè)問(wèn)題建議大家把path中%JAVA_HOME%in給放到最前面,當(dāng)然你的jdk版本得支持你后面需要安裝的軟件。
總結(jié)幾個(gè)知識(shí)點(diǎn)吧~~
JDK、JRE有什么區(qū)別:
Jre 是java runtime environment的縮寫(xiě), 是java程序的運(yùn)行環(huán)境。既然是運(yùn)行,當(dāng)然要包含jvm,也就是大家熟悉的虛擬機(jī)啦, 還有所有java類庫(kù)的class文件,都在lib目錄下打包成了jar。大家可以自己驗(yàn)證。至于在windows上的虛擬機(jī)是哪個(gè)文件呢? Javajdk jreinclient里面是不是有一個(gè)jvm.dll呢?那就是虛擬機(jī)。
Jdk 是java development kit,是java的開(kāi)發(fā)工具包,里面包含了各種類庫(kù)和工具。當(dāng)然也包括了另外一個(gè)Jre--------Javajre. 那么為什么要包括另外一個(gè)Jre呢?而且jdkjrein同時(shí)有client和server兩個(gè)文件夾下都包含一個(gè)jvm.dll。 說(shuō)明是有兩個(gè)虛擬機(jī)的。
Javajdkin這個(gè)bin下有各種java程序需要用到的命令,與Javajdkjrein或者Javajrein的bin目錄最明顯的區(qū)別就是Javajdkin下才有javac.exe,這一點(diǎn)很好理解,因?yàn)?jre只是一個(gè)運(yùn)行環(huán)境而已。與開(kāi)發(fā)無(wú)關(guān),正因?yàn)槿绱耍邆溟_(kāi)發(fā)功能的jdk自己的jre下才會(huì)同時(shí)有client性質(zhì)的jvm和server性質(zhì)的 jvm, 而僅僅作為運(yùn)行環(huán)境的jre下只需要client性質(zhì)的jvm.dll就夠了。
我們用的java命令并不是 Javajdkin目錄下的而是Javajdkjrein目錄下的。不信可以做一個(gè)實(shí)驗(yàn),大家可以把Javajdkin目錄下的java.exe剪切到別的地方再運(yùn)行 java程序,發(fā)現(xiàn)了什么?一切OK!
如果java為了提供給大多數(shù)人使用,他們是不需要jdk做開(kāi)發(fā)的,只需要jre能讓java程序跑起來(lái)就可以了,那么每個(gè)客戶還需要手動(dòng)去設(shè)置環(huán)境變量多麻煩啊?
所以安裝jre的時(shí)候安裝程序自動(dòng)幫你把jre的java.exe添加到了系統(tǒng)變量中,因此去C:Windowssystem32下面去看看吧,發(fā)現(xiàn)有一個(gè)java.exe。
參考原文:http://www.cnblogs.com/betteryi/p/3790292.html
總結(jié)
以上是生活随笔為你收集整理的Java环境变量配置&解决版本不一致问题 (转)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Js 页面元素 简单震动效果
- 下一篇: 荒野大镖客2主线剧情是什么