OVH Cloud OVH Cloud

JDK 1.5 -> Runtime 1.4.1

5 réponses
Avatar
Zouplaz
Bonjour, je viens d'installer eclipse 3.1M6 et compilé un simple source
contenant deux ou trois tests sur les nouvelles fonctionnalités du JDK1.5
(generics par ex, les "foreach", etc.)

J'ai tenté ensuite d'exécuter le fichier class sur une plateforme où seule
la version 1.4.1 est disponible et j'obtiens une erreur à l'exécution :

Exception in thread "main" java.lang.UnsupportedClassVersionError: Test
(Unsupported major.minor version 49.0)


J'aimerais savoir s'il y a un moyen de produire du code compatible avec le
runtime 1.4.1 à partir du jdk 1.5 sachant que peut-être (là c'est moi qui
suppose) que les nouveautés en question se situent côté compilateur et pas
côté bytecode.


Merci

5 réponses

Avatar
Arnaud Berger
Bonjour,

Il y a des options de "compatibilité cible" dans
Fenetre-->Préférences-->Java-->Compilateur
(dans Eclipse 2.1.3 mais bon, il doivent y être encore)

Cordialement,

Arnaud

"Zouplaz" a écrit dans le message news:

Bonjour, je viens d'installer eclipse 3.1M6 et compilé un simple source
contenant deux ou trois tests sur les nouvelles fonctionnalités du JDK1.5
(generics par ex, les "foreach", etc.)

J'ai tenté ensuite d'exécuter le fichier class sur une plateforme où seule
la version 1.4.1 est disponible et j'obtiens une erreur à l'exécution :

Exception in thread "main" java.lang.UnsupportedClassVersionError: Test
(Unsupported major.minor version 49.0)


J'aimerais savoir s'il y a un moyen de produire du code compatible avec le
runtime 1.4.1 à partir du jdk 1.5 sachant que peut-être (là c'est moi qui
suppose) que les nouveautés en question se situent côté compilateur et pas
côté bytecode.


Merci


Avatar
Zouplaz
"Arnaud Berger" wrote in
news:d3odn2$s85$:

Bonjour,

Il y a des options de "compatibilité cible" dans
Fenetre-->Préférences-->Java-->Compilateur
(dans Eclipse 2.1.3 mais bon, il doivent y être encore)



Je viens juste d'essayer mais si je sélectionne Generated Class
compatibility = 1.4 et source compatibilty = 5 il refuse de valider ce
choix qu'il considère comme incohérent...

Il y a peut-être carrément une option "style" ligne de commande à passer au
compilateur d'eclipse ?

Avatar
Jean-Louis Liagre
Zouplaz wrote:
"Arnaud Berger" wrote in
news:d3odn2$s85$:


Bonjour,

Il y a des options de "compatibilité cible" dans
Fenetre-->Préférences-->Java-->Compilateur
(dans Eclipse 2.1.3 mais bon, il doivent y être encore)




Je viens juste d'essayer mais si je sélectionne Generated Class
compatibility = 1.4 et source compatibilty = 5 il refuse de valider ce
choix qu'il considère comme incohérent...

Il y a peut-être carrément une option "style" ligne de commande à passer au
compilateur d'eclipse ?



"-source 1.4" ou "-target 1.4" font l'affaire.

"javac -help"
ou
"man javac" vous l'auraient dit ...


Avatar
Jean-Louis Liagre
Zouplaz wrote:
"Arnaud Berger" wrote in
news:d3odn2$s85$:


Bonjour,

Il y a des options de "compatibilité cible" dans
Fenetre-->Préférences-->Java-->Compilateur
(dans Eclipse 2.1.3 mais bon, il doivent y être encore)




Je viens juste d'essayer mais si je sélectionne Generated Class
compatibility = 1.4 et source compatibilty = 5 il refuse de valider ce
choix qu'il considère comme incohérent...


Ce en quoi il n'a pas tord: je ne sais pas si le bytecode a évolué,
mais le format d'une classe évolue à chaque changement de version.
Il faut donc que la version du source soit inférieure ou égale
à la version de la classe générée.


Avatar
Thomas Cornet
Il n'y pas de compatibilité ascendante entre deux version successives du
JDK (ou de quelque autre logiciels que ce soit). La plate-forme 1.5 peut
exécuter du code 1.4 mais la plateforme 1.4 ne peut pas exécuter du code
1.5, vu qu'elle n'intègre pas toutes les nouveautés apparues dans la
dernière version.

Pour rendre le code compatible avec la JRE 1.4 dans Eclipse, il faut qu'au
niveau des propriétés du projet, danes les options du compilateur, il faut
mettre le 'compiler compliance level' à 1.4, et que les options 'Generated
.class files compatibility' et 'source compatibility' aient pour valeur
'1.4' maximum afin qu'eclipse génère des classes compatibles et executables
par une JRE 1.4.


Bonjour, je viens d'installer eclipse 3.1M6 et compilé un simple source
contenant deux ou trois tests sur les nouvelles fonctionnalités du JDK1.5
(generics par ex, les "foreach", etc.)

J'ai tenté ensuite d'exécuter le fichier class sur une plateforme où seule
la version 1.4.1 est disponible et j'obtiens une erreur à l'exécution :

Exception in thread "main" java.lang.UnsupportedClassVersionError: Test
(Unsupported major.minor version 49.0)


J'aimerais savoir s'il y a un moyen de produire du code compatible avec le
runtime 1.4.1 à partir du jdk 1.5 sachant que peut-être (là c'est moi qui
suppose) que les nouveautés en question se situent côté compilateur et pas
côté bytecode.


Merci