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)
このクラスは、実行に使用されたものよりも新しいJDKでコンパイルされました。
最も簡単なのは、プログラムを実行するコンピューターに最新のJREをインストールすることです。最近インストールしたと思われる場合は、Java_HOMEおよびPATH環境変数を確認してください。
バージョン49はJava 1.5です。つまり、クラスはまだ古いJDKを使用して(またはJDKを使用して)コンパイルされました。 JDK 1.4でクラスを実行しようとした可能性があります。本当にもう1つ使用する必要があります(1.6または1.7。 Javaバージョン履歴 を参照)。
別のオプションは、すべてのクラスを削除して再構築することです。ビルドファイルを持つことは、コンパイル、パッケージ化、展開などのプロセス全体を制御するための理想的なソリューションです。ソース/ターゲットバージョンを指定することもできます
ほとんどの場合、コードは後のJDKでコンパイルされ( クロスコンパイルオプション を使用せずに)、以前のJREで実行されています。 JREのアップグレードは1つのソリューションですが、クロスコンパイルオプションを使用して、アプリの最小バージョンとして意図されているJREでコードが実行されるようにすることをお勧めします。