web-dev-qa-db-ja.com

Eclipseプロジェクトを以前のJava=バージョンに変換するにはどうすればよいですか?

以前JRE7を使用し、JRE7システムライブラリを参照していたプロジェクトがEclipseにあります。 JRE6で実行するために絶対に必要です。 Java 7の特定の構文を使用していないため、ソースコード自体は完全に互換性があります。ここで私がすでに行ったことを説明します。

  • JDK6をインストールしました。
  • 次にWindow> Preferences> Java> Installed JREsに移動し、JRE6をデフォルトとして設定しました。
  • プロジェクトのbuild pathを構成して、JRE7のライブラリではなく、JRE6のシステムライブラリを参照するようにしました。
  • 最後にRun Configurations> JREに移動し、JRE6で実行するように設定しました。

最後のステップの直後に、ダイアログの上部に次のメッセージが表示されます。

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がこれを自動的に行うと思いました。

22
Jonathan

まず、プロジェクトをクリーンアップします。

プロジェクト>クリーン

それでも問題が解決しない場合...

次に、プロジェクト固有のJavaコンパイラを確認します。

プロジェクト>プロパティ> Javaコンパイラ

40
Colin D

Colinによって提供された2番目の方法がうまくいきました。

以下は、そのアプローチのすべてのステップを視覚的に表したものです。

enter image description hereenter image description hereenter image description hereenter image description here

10

私はEclipseがこれを自動的に行うと思いました。何か案は?

Eclipseは、ユーザーが要求するまですべてのプロジェクトをクリーンアップしません。変更したソースの生成されたクラスファイルのみをクリーンアップします。ソリューションのクリーンビルドを実行し、すべてを再ビルドして再度実行する必要があります。問題なく機能するはずです。

3
GETah

ありがとうございます。問題は解決しましたが、別の方法を追加して、別のフレーバーを追加したいと思います。


これを行うには、project_directory/.settings/org.Eclipse.jdt.core.prefsファイルでプロジェクト設定を手動で編集し、Eclipseでプロジェクトを更新します。

Change from 1.7 to 1.6

1
karimvai

私は、プロジェクトをクリーンアップしても問題が解決しない場合を率いています。実際に機能させるには、特定のプロジェクトを閉じて再度開く必要がありました。

1
Remo