2012-08-02 76 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。

相关问题