Java報錯--Unsupported major.minor version 52.0


遇到一個Java相關的報錯:

...

java.lang.UnsupportedClassVersionError: ... : Unsupported major.minor version 52.0
...

報錯說的不明不白,度娘后發現這樣一個消息:

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.

Version-Release number of selected component (if applicable):


How reproducible:
always

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM