2012-01-27 28 views
0

我是一個新的Linux用戶。我剛安裝jdk1.7.0_02.rpm並試圖使用javac tester.java編譯我的程序當我嘗試通過java tester運行該文件我得到這些錯誤編譯後不能運行我的程序說不支持的類版本錯誤

Exception in thread "main" java.lang.UnsupportedClassVersionError: tester : Unsupported major.minor version 51.0 
at java.lang.ClassLoader.defineClass1(Native Method) 
at java.lang.ClassLoader.defineClass(ClassLoader.java:634) 
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) 
at java.net.URLClassLoader.defineClass(URLClassLoader.java:277) 
at java.net.URLClassLoader.access$000(URLClassLoader.java:73) 
at java.net.URLClassLoader$1.run(URLClassLoader.java:212) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.net.URLClassLoader.findClass(URLClassLoader.java:205) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:321) 
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:266) 

找不到主類:測試儀。程序將會退出。

然後我檢查了Java的版本,它是:

java version "1.6.0_22" 
OpenJDK Runtime Environment (IcedTea6 1.10.4) (fedora-61.1.10.4.fc16-i386) 
OpenJDK Server VM (build 20.0-b11, mixed mode) 

現在我該怎樣改變這個版本?我甚至安裝了jre1.7.0_02,但沒有任何改變!

這是正在發生的事情:

enter image description here

+2

順便說一下,您能否瞭解如何從CLI中複製/粘貼文本?該屏幕截圖不太有用,但佔用了更多帶寬。 – 2012-01-27 07:14:31

+0

**接受的答案是唯一可以運行我的程序** – 2012-01-28 03:49:12

+0

您尚未解決此問題。這是一個安裝問題,並且與您的Linux環境配置方式有關,而不是Java方面的任何問題。 – kittylyst 2012-02-01 16:08:40

回答

2

使用javaccross-compilation options。指定-source-target版本並按照其他選項的提示進行操作。


,那麼請告訴怎麼樣?

javac -source 1.6 -target 1.6 -bootclasspath /path/to/1.6/j2se/rt.jar *.java 

如果指定source/target,1.7編譯器會發出警告使用-bootclasspath選項,以驗證類,方法和源引用的屬性,在目標罐可用這是很重要的。早期版本的編譯器未能警告關於bootclasspath

+0

我無法從1.7.0_02運行源代碼並在VM 1.6.0_02中運行 – 2012-01-27 06:48:50

+0

我可以。是否你投票否決了我的答案? – 2012-01-27 07:08:41

+0

沒有。我不低調,直到我對答案感到憤怒 – 2012-01-27 07:13:21

4

運行在終端:

sudo update-alternatives --config java 

,並選擇了Java的首選版本。如果您沒有看到您想要的版本作爲選項,請查看this網站。

+0

[沒有任何事情發生](http://i43.tinypic.com/25813xl.png)當我輸入1 – 2012-01-27 06:45:59

+0

@BitFiber它爲我工作...謝謝:) – 2013-11-20 15:05:28

0

好的,首先,您不應該以root身份運行Java應用程序。

使用sudo功能更改爲用戶帳戶,並且在絕對需要它們之前不要使用root權限。

它看起來像javac已更新到版本7,但java沒有。

這是什麼回報:

javac -version 

你也應該告訴我們您的JAVA_HOME環境變量的當前值。像這樣:

set | grep ^JA 
+0

1.7.0_02 javac版 – 2012-01-27 06:14:49

+0

好吧,我們說安裝沒有完全正確運行。 或者可能是root的shell設置具有硬編碼路徑。 「which java」和「which javac」的輸出是什麼? – kittylyst 2012-01-27 07:03:28

+0

閱讀這個問題,請java是1.6.0_02和javac是1.7.0_02 – 2012-01-27 07:07:14

0

您需要系統在運行Java程序時使用JRE 1.7。爲了做到這一點,請確保JAVA_HOME已正確設置爲JRE 1。7:

export JAVA_HOME=/path/to/JRE1.7 

還要確保,你的PATH變量指向正確的java/bin目錄:

export PATH=$PATH:/path/to/JRE1.7/bin 

堅持這些環境變量超出重啓/註銷依賴於Linux的發行版,你正在使用...

編輯:澄清:如果您正在編譯版本1.7(默認目標爲1.7),您必須使用> = 1.7 JRE。

所以,你有2種選擇:

  1. 使用JRE 1.7運行你1.7編譯的程序(如上文所述)
  2. 創建使用 「-target 1.6」 CMDLINE參數的1.6兼容的代碼javac編譯時
+0

*「你需要你的系統使用JRE 1。7「*你說喜歡它是首選和唯一的選擇,它不是。 – 2012-01-27 07:12:31

+0

我做了這個** [root @ Feddy非管理員]#** export JAVA_HOME =/usr/java/jre1.7.0_02 * * [root @ Feddy非管理員]#** export PATH = $ PATH:/jre1.7.0_02/bin 但沒有任何事發生 – 2012-01-27 07:49:10

+0

我想第二個應該是:export PATH = $ PATH:/ usr/java/jre1 .7.0_02/bin – quaylar 2012-01-27 07:52:26

0

沒有任何理由,系統環境中的JAVA_HOME也必須設置。雖然如果您在應用程序屬性中設置JAVA_HOME。

相關問題