comment assurer la compatibilité entre deux parties travaillant sur différentes versions de jdk

StackOverflow https://stackoverflow.com/questions/3240822

Question

Mon projet est construit en 1.4.2 JDK.Il va maintenant interagir avec un fichier jar tiers, intégré au JDK 1.6.

Je rencontre un problème de compatibilité lors de l'utilisation des classes client.Est-il possible de le résoudre sans mettre à niveau mon JDK vers la version 1.6 ou reconstruire un fichier jar tiers dans la version 1.4.2

Était-ce utile?

La solution

Vous ne pouvez pas exécuter une classe compilée avec JDK 1.6 sur le JDK 1.4 précédent car vous obtiendrez un java.lang.UnsupportedClassVersionError exception.Cela est dû au fait que Java n'est pas rétrocompatible, il est simplement rétrocompatible (voir spécification).

Afin de le vérifier, j'ai installé JDK 1.4.2.19 et JDK 1.6.0.23 et écrit un exemple d'application :

public class HelloWorld {
    public static void main(String[] args) {
            System.out.println("Hello world!");
    }
}

Construit avec JDK 1.6.0.23 :

 ../1.6.0.23/bin/javac HelloWorld.java

Et exécutez-le avec JDK 1.4.2.19 :

../1.4.2.19/bin/java HelloWorld

Sortir:

Exception in thread "main" java.lang.Erreur de version de classe non prise en charge: HelloWorld
(Version majeure ou mineure non prise en charge 50.0)
      at java.lang.ClassLoader.defineClass0(Native Method)
      at java.lang.ClassLoader.defineClass(ClassLoader.java:539)
        ...


Solution:Vous pouvez essayer de reconstruire votre application tierce avec JDK 1.4 si elle n'appelle pas les méthodes introduites dans 1.6 (et 1.5).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top