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-versionは次のとおりです。

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が表示されていると仮定すると、2つが異なる理由を理解する必要があります。

ランニング

$ which java
$ which javac

役立つかもしれません...情報は確かに私たちがあなたを助けるのに役立ちます.

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

コンパイル用のクラスパスにあるjdkは、実行時のものとは異なるようです。両方のクラスパスで同じ jdk が利用可能であることを確認してください。

于 2012-08-02T18:11:00.073 に答える
0

Ubuntuでまったく同じ問題に遭遇しました。私の問題は、openjdk-6-jre-lib の元のライブラリを完全に削除する必要があることでした。そのパッケージと、シナプス マネージャーで openjdk 6 または jre バージョン 6 に関連するものをすべて削除します。Ubuntu 12 を使用している場合は、シナプスが削除されたため、シナプスをインストールする必要があります。私はソフトウェアマネージャを使うのが嫌いです。open jdk のバージョン 7 がインストールされていることを確認してください。

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 に答える