以前JRE7を使用し、JRE7システムライブラリを参照していたプロジェクトがEclipseにあります。 JRE6で実行するために絶対に必要です。 Java 7の特定の構文を使用していないため、ソースコード自体は完全に互換性があります。ここで私がすでに行ったことを説明します。
最後のステップの直後に、ダイアログの上部に次のメッセージが表示されます。
JREはプロジェクトの.classファイルとの互換性がありません:1.7
プロジェクトを実行すると、次のエラーメッセージが表示されます。
Java.lang.UnsupportedClassVersionError: ExampleProcessingApp : 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:314)
at Sun.applet.AppletClassLoader.loadClass(AppletClassLoader.Java:146)
at Java.lang.ClassLoader.loadClass(ClassLoader.Java:266)
at Sun.applet.AppletClassLoader.loadCode(AppletClassLoader.Java:608)
at Sun.applet.AppletPanel.createApplet(AppletPanel.Java:798)
at Sun.applet.AppletPanel.runLoader(AppletPanel.Java:727)
at Sun.applet.AppletPanel.run(AppletPanel.Java:380)
at Java.lang.Thread.run(Thread.Java:679)
前に述べたように、プロジェクトの実際のコードはJava 6構文と同じなので、JRE6で実行されます。そのため、おそらくソースコードからすべての.classファイルを再コンパイルする必要があります。Eclipseがこれを自動的に行うと思いました。
まず、プロジェクトをクリーンアップします。
プロジェクト>クリーン
それでも問題が解決しない場合...
次に、プロジェクト固有のJavaコンパイラを確認します。
プロジェクト>プロパティ> Javaコンパイラ
Colinによって提供された2番目の方法がうまくいきました。
以下は、そのアプローチのすべてのステップを視覚的に表したものです。
私はEclipseがこれを自動的に行うと思いました。何か案は?
Eclipseは、ユーザーが要求するまですべてのプロジェクトをクリーンアップしません。変更したソースの生成されたクラスファイルのみをクリーンアップします。ソリューションのクリーンビルドを実行し、すべてを再ビルドして再度実行する必要があります。問題なく機能するはずです。
私は、プロジェクトをクリーンアップしても問題が解決しない場合を率いています。実際に機能させるには、特定のプロジェクトを閉じて再度開く必要がありました。