54

Javaプログラムを実行すると、このエラーが発生しました。このエラーが発生する理由を教えてください。

Exception in thread "main" java.lang.UnsupportedClassVersionError: 
    GenerateInvoice (Unsupported major.minor version 49.0)
        at java.lang.ClassLoader.defineClass0(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:539)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:123)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:251)
        at java.net.URLClassLoader.access$100(URLClassLoader.java:55)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:194)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:187)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:289)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:274)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:235)
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:302)
4

4 に答える 4

90

このクラスは、実行に使用されたものよりも新しい JDK でコンパイルされました。

最も簡単な方法は、プログラムを実行するコンピューターに最新の JRE をインストールすることです。最近のものをインストールしたと思われる場合は、JAVA_HOME および PATH 環境変数を確認してください。

バージョン 49 は Java 1.5 です。これは、クラスがまだ古い JDK を使用して (またはそのために) コンパイルされたことを意味します。JDK 1.4 でクラスを実行しようとした可能性があります。もう 1 つ最新のものを使用する必要があります (1.6 または 1.7、Java バージョン履歴を参照)。

于 2012-10-07T16:26:54.580 に答える
4

別のオプションは、すべてのクラスを削除して再構築することです。ビルド ファイルを持つことは、コンパイル、パッケージ化、展開などのプロセス全体を制御するための理想的なソリューションです。ソース/ターゲット バージョンを指定することもできます

于 2012-10-07T17:36:12.790 に答える
1

コードは、(クロスコンパイル オプションを使用せずに) 新しい JDK でコンパイルされた可能性が高く、以前の JRE で実行されています。JRE のアップグレードは 1 つの解決策ですが、クロス コンパイル オプションを使用して、アプリの最小バージョンとして意図されている JRE でコードが確実に実行されるようにすることをお勧めします。

于 2012-10-07T16:30:36.837 に答える