2013-10-21 46 views
1

一個簡單的hello word程序被編譯,但是當我運行它時,我得到以下異常。線程「main」中的異常java.lang.UnsupportedClassVersionError:HelloWorldApp

Exception in thread "main" java.lang.UnsupportedClassVersionError: a (Unsupported major.minor version 51.0) 
    at java.lang.ClassLoader.defineClass0(Native Method) 
    at java.lang.ClassLoader.defineClass(Unknown Source) 
    at java.security.SecureClassLoader.defineClass(Unknown Source) 
    at java.net.URLClassLoader.defineClass(Unknown Source) 
    at java.net.URLClassLoader.access$100(Unknown Source) 
    at java.net.URLClassLoader$1.run(Unknown Source) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(Unknown Source) 
    at java.lang.ClassLoader.loadClass(Unknown Source) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) 
    at java.lang.ClassLoader.loadClass(Unknown Source) 
    at java.lang.ClassLoader.loadClassInternal(Unknown Source) 
    Could not find the main class:HelloWorldApp.Program will exit. 

我有Java版本1.6.0_21

我的計劃是:

class HelloWorldApp { 
    public static void main(String[] args) { 
    System.out.println("Hello World!"); // Display the string. 
    } 
} 
+0

格式設置你的JDK的代碼 – 2013-10-21 17:23:28

+0

版本? –

+1

這個簡單的Hello World程序有多簡單?我們可以看到代碼嗎? – Katana24

回答

0

您運行在Java 7中編譯一個類的Java 6 JVM

2

你編譯Java代碼爲Java JRE的一個版本(例如第7版),但你跑這對一箇舊JRE版本(例如版本6)。

要找出哪個版本當前您已經成立,你可以打開一個shell或命令提示符(在Windows)和類型:

java -version 

這將返回版本號。

===編輯=== 添加更多細節,回覆評論 Java是來自無論是JRE或JDK二進制。有不同的JRE/JDK提供商,主要是Oracle。

如果您使用的是Windows,你可以去C:\Program Files\JavaC:\Program Files (x86)\Java(32位),你會發現你有JRE文件夾和文件夾的JDK。一個JDK總是包含一個JRE。 JRE是運行Java程序所需的最低限度。通常情況下,您始終擁有與JDK版本相同的JRE版本。爲了簡單起見,請始終針對您的JDK進行開發和測試。確保你選擇了正確的一個。

你怎麼知道哪個在使用?這基於你的環境變量。在Windows命令提示符下,你可以寫:

C:\Users\djob>set JA 

,並會與

JAVA_HOME=C:\Program Files\Java\jdk1.7.0_04 

答覆,你知道正在使用JRE的話:自帶的JDK 1.7的一個。 0u04。順便說一句,Java 7是Java 1.7(這是一個Java約定),就像Java 6實際上是Java 1.6一樣。

請注意,您的IDE(例如Eclipse)可能使用不同的JRE進行設置,因此請在此處進行檢查。

HTH

+0

那麼,jdk版本和java版本(我在cmd中看到)有什麼區別? – madhurgarg

+0

我在答案中增加了更多細節。我希望它能涵蓋你所需要的一切 –

0

class文件的版本編譯與Java的更新版本。您需要重新編譯您的源代碼。如果您無法重新編譯它,或者您沒有源代碼,則可以隨時升級到新版本的Java SE。請記住,當您安裝Java JDK或JRE時,總會有jshed進程正在運行,並且它始終建議您在Java版本更改時進行升級。所有你需要的是讓它進入互聯網,一旦連接起來,它就會完成它的工作,就像魔術一樣。

0

的Java版本編譯了不一樣的,你在JAVA_HOME

相關問題