2012-08-02 64 views
2

我有Main.java,它看起來像這樣:找不到主類:主要的應用程序將退出

public class Main { 

    /** 
    * @param args 
    */ 
    public static void main(String[] args) throws UnsupportedEncodingException { 
     // TODO Auto-generated method stub 
     System.out.println("here!"); 
    } 

} 

我編譯:

javac Main.java 

並嘗試與

java Main 

運行它,並將它與folloving異常死亡:

Exception in thread "main" java.lang.UnsupportedClassVersionError: Main : 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) 
Could not find the main class: Main. Program will exit. 

Java的版本是:

java version "1.6.0_24" 
OpenJDK Runtime Environment (IcedTea6 1.11.3) (6b24-1.11.3-1ubuntu0.12.04.1) 
OpenJDK 64-Bit Server VM (build 20.0-b12, mixed mode) 

我的Ubuntu服務器上運行此。

我在做什麼錯?

UPDATE

javac -version

javac 1.7.0_03 

which java

/usr/bin/java 

which javac

/usr/bin/javac 
+2

'javac -version'的輸出是什麼? – 2012-08-02 18:10:36

+0

它是javac 1.7.0_03 – 2012-08-02 18:12:19

+0

你的主要課程包是什麼?您需要提供完全限定的類名(包括程序包名稱)來運行該類。 – 2012-08-02 18:15:29

回答

3
java.lang.UnsupportedClassVersionError: Main : Unsupported major.minor version 51.0 

看起來你在類路徑中編譯的jdk和你在運行時所使用的不同。確保在兩個類路徑中都有相同的jdk。

+1

我該如何解決這個問題? – 2012-08-02 18:11:33

+1

驗證類路徑 – kosa 2012-08-02 18:12:30

5

你試圖運行與Java 6,但它看起來像你編譯與Java 7

運行

javac -version 

檢查...並假設它顯示Java 7,你需要制定出爲什麼這兩個不同。

運行

$ which java 
$ which javac 

威力幫助...的信息肯定會幫助我們來幫助你。

0

我在Ubuntu上遇到了同樣的問題。我的問題是一些來自openjdk-6-jre-lib的原始庫需要完全刪除。在你的突觸管理器中刪除那個包和任何與openjdk 6或jre version 6有關的東西。如果你在Ubuntu 12上,你需要安裝突觸,因爲他們刪除它。我不喜歡使用軟件管理器。確保你已經安裝了版本7的開放jdk。

的OpenJDK-7-JRE-lib的

請記住,這是替代使用Oracle的Java 7的安裝。開放意味着開源版本。

如果您在Ubuntu上安裝openjdk 7,則應自動設置類路徑。我不必調整。如果你想調整它,你可以在〜/ .bash_profile中設置它。但是請記住,你將有限的區域(需要在你的〜/層次結構下),你可以在命令行上編譯。你需要使用「drew:source .bash_profile」重新加載。我調整了/ etc/environment中的類路徑,它在Ubuntu 12上關於openjdk 6的突觸包管理器搞砸了。無論如何,當classpath被改變時,我無法使用突觸解除安裝openjdk 6。

相關問題