web-dev-qa-db-fra.com

Comment convertir mon projet Eclipse dans une version antérieure de Java?

J'ai un projet dans Eclipse qui utilisait auparavant JRE7 et faisait référence aux bibliothèques système JRE7. J'en ai absolument besoin pour fonctionner maintenant dans JRE6. Je n'ai pas utilisé de syntaxe spécifique à Java 7, de sorte que le code source lui-même est entièrement compatible. Voici ce que j'ai déjà fait:

  • J'ai installé JDK6.
  • Je suis ensuite allé dans Fenêtre> Préférences> Java> JRE installés et ai défini JRE6 par défaut.
  • J'ai configuré le build path de mon projet pour référencer la bibliothèque système JRE6 et non la bibliothèque JRE7.
  • Enfin, je suis allé dans Exécuter Configurations> JRE et l’a configuré pour s’exécuter dans JRE6.

Immédiatement après cette dernière étape, la partie supérieure de la boîte de dialogue affiche un message indiquant:

JRE non compatible avec la compatibilité des fichiers projet .class: 1.7

Et quand je lance le projet, je reçois ce message d'erreur: 

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)

Comme je l'ai mentionné précédemment, le code actuel du projet n'est pas différent de la syntaxe Java 6 et doit donc être exécuté dans JRE6. Donc, vraisemblablement, j'ai besoin de recompiler en quelque sorte tous les fichiers .class à partir du code source. Je pensais qu'Eclipse le ferait automatiquement. Des idées?

20
Jonathan

Tout d'abord, nettoyez votre projet:

Projet> Nettoyer

Si ça ne répare pas les choses ...

Deuxièmement, vérifiez le compilateur Java spécifique à votre projet:

Projet> Propriétés> Compilateur Java

36
Colin D

La deuxième méthode fournie par Colin a fonctionné pour moi.

Voici une représentation visuelle de toutes les étapes de cette approche:

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

9
ROMANIA_engineer

Je pensais qu'Eclipse le ferait automatiquement. Des idées?

No Eclipse ne nettoie pas tous les projets tant que vous ne le demandez pas. Il nettoie que les fichiers de classe générés des sources que vous avez modifiées. Vous devez créer une nouvelle version de votre solution, tout reconstruire et réexécuter, cela devrait fonctionner correctement.

3
GETah

J'ai dirigé un cas où le nettoyage du projet n'a pas résolu le problème. En fait, j'ai dû fermer et rouvrir le projet spécifique pour le faire fonctionner.

1
Remo

Merci à tous ... Bien que ce soit résolu, je voudrais ajouter une autre façon de faire pour ajouter une autre saveur.


Pour ce faire, vous pouvez modifier manuellement les préférences de projet dans le fichier répertoire_projet/.settings/org.Eclipse.jdt.core.prefs, puis actualiser le projet dans Eclipse.

 Change from 1.7 to 1.6

0
karimvai