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

它死于以下异常:

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 服务器上运行它。

我究竟做错了什么?

更新

javac -version

javac 1.7.0_03

which java

/usr/bin/java

which javac

/usr/bin/javac
4

3 回答 3

5

您正在尝试使用 Java 6运行,但看起来您正在使用 Java 7 进行编译。

javac -version

检查...并假设它显示Java 7,您需要找出两者不同的原因。

跑步

$ which java
$ which javac

可能会有所帮助...这些信息肯定会帮助我们帮助您。

于 2012-08-02T18:11:47.513 回答
3
java.lang.UnsupportedClassVersionError: Main : Unsupported major.minor version 51.0

您在类路径中用于编译的 jdk 似乎与您在运行时中的 jdk 不同。确保在两个类路径中都有相同的 jdk 可用。

于 2012-08-02T18:11:00.073 回答
0

我在 Ubuntu 上遇到了完全相同的问题。我的问题是需要完全删除 openjdk-6-jre-lib 中的一些原始库。在突触管理器中删除该软件包以及与 openjdk 6 或 jre 版本 6 相关的任何内容。如果您使用的是 Ubuntu 12,则需要安装 synaptic,因为他们已将其删除。我不喜欢使用软件管理器。确保您安装了版本 7 的 open jdk。

openjdk-7-jre-lib

请记住,这是使用 Oracle 的 Java 7 安装的替代方法。开放意味着开源版本。

如果您在 Ubuntu 上安装 openjdk 7,则应自动设置类路径。我不必调整它。如果你确实想调整它,你可以在 ~/.bash_profile 中设置它。但请记住,您可以从命令行编译的区域有限(需要在您的 ~/ 层次结构下)。您需要使用“drew: source .bash_profile”重新加载。我在 /etc/environment 中调整了类路径,它弄乱了关于 ubuntu 12 上 openjdk 6 的突触包管理器。无论如何,当类路径发生更改时,我无法使用突触卸载 openjdk 6。

于 2012-09-24T08:41:35.227 回答