遇到一個Java相關的報錯:html
...java
java.lang.UnsupportedClassVersionError: ... : Unsupported major.minor version 52.0
...node
報錯說的不明不白,度娘後發現這樣一個消息:linux
Whenever something like this happens in our software, we tell our users. This is a bug, we need to fix it.編程
I would expect a message like: You are running the wrong Java version on this machine: 1.7, please install and set the right java version: 1.8服務器
A normal user will first have to find out what a major.minor version is, then have to find the mapping between majaor.minor and Java version,
depending on vendor, this could even vary. This is not a good user experience.oracle
Version-Release number of selected component (if applicable):app
How reproducible:
alwaysjvm
Steps to Reproduce:
1. Install and set java 7: java -version should show 1.7
2. Run Java 8 compiled code against this java version編程語言
檢查看發現本身服務器上Java果真是1.7的(Java -version)
下載合適的Java1.8:
http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
安裝:
[root@hadoop-node-2 java]# rpm -ivh jdk-8u92-linux-x64.rpm
Preparing... ########################################### [100%]
1:jdk1.8.0_92 ########################################### [100%]
Unpacking JAR files...
tools.jar...
plugin.jar...
javaws.jar...
deploy.jar...
rt.jar...
jsse.jar...
charsets.jar...
localedata.jar...
添加環境變量:
[root@hadoop-node-2 jdk1.8.0_92]# tail -3 /etc/profile
export JAVA_HOME=/usr/java/jdk1.8.0_92
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/jre/lib:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar
查看是否成功:
[root@hadoop-node-2 jdk1.8.0_92]# which java
/usr/java/jdk1.8.0_92/bin/java
[root@hadoop-node-2 jdk1.8.0_92]# which javac
/usr/java/jdk1.8.0_92/bin/javac
[root@hadoop-node-2 jdk1.8.0_92]# java -version
java version "1.8.0_92"
Java(TM) SE Runtime Environment (build 1.8.0_92-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.92-b14, mixed mode)
[root@hadoop-node-2 jdk1.8.0_92]# javac -version
javac 1.8.0_92
再次運行個人程序,成功經過,再也不報錯,完美!
另附相關的幾個近義詞辨析:
Java:是一種計算機編程語言
javac:是Java語言編程編譯器,是一種能夠讀取由java語言編寫的類和接口的定義,並將它們編譯成字節代碼的class文件的工具
JDK:是Java語言的軟件開發工具包,沒有JDK的話,沒法編譯Java程序
jre: 爲Java Runtime Environment的簡稱,即Java運行環境,是運行JAVA程序所必須的環境的集合,它包括Java虛擬機(jvm)、Java核心類庫和支持文件,但不包含開發工具(JDK)、調試器和其它工具。
注意:若是隻須要運行Java程序或Applet,下載並安裝jre便可。若是要自行開發Java軟件,請下載JDK。在JDK中附帶有JRE