so stellen Sie die Kompatibilität zwischen zwei Parteien her, die an verschiedenen JDK-Versionen arbeiten
-
15-09-2020 - |
Frage
Mein Projekt ist in 1.4.2 JDK eingebaut.Jetzt wird es mit einem JAR eines Drittanbieters interagieren, das in JDK 1.6 eingebaut ist
Bei der Verwendung von Client-Klassen tritt ein Kompatibilitätsproblem auf.Ist es möglich, das Problem zu beheben, ohne mein JDK auf 1.6 zu aktualisieren oder das JAR von Drittanbietern in 1.4.2 neu zu erstellen
Lösung
Sie können eine mit JDK 1.6 kompilierte Klasse nicht mit dem vorherigen JDK 1.4 ausführen, da Sie eine erhalten java.lang.UnsupportedClassVersionError
Ausnahme.Dies liegt daran, dass Java nicht aufwärtskompatibel ist, sondern nur abwärtskompatibel (siehe Spezifikation).
Um dies zu überprüfen, habe ich JDK 1.4.2.19 und JDK 1.6.0.23 installiert und eine Beispielanwendung geschrieben:
public class HelloWorld { public static void main(String[] args) { System.out.println("Hello world!"); } }
Erstellt mit JDK 1.6.0.23:
../1.6.0.23/bin/javac HelloWorld.java
Und führe es mit JDK 1.4.2.19 aus:
../1.4.2.19/bin/java HelloWorld
Ausgabe:
Exception in thread "main" java.lang.Nicht unterstütztklassenversionfehler: HelloWorld (Nicht unterstützter Major.nebenversion 50.0) at java.lang.ClassLoader.defineClass0(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:539) ...
Lösung:Sie können versuchen, Ihre Drittanbieteranwendung mit JDK 1.4 neu zu erstellen, wenn sie keine in 1.6 (und 1.5) eingeführten Methoden aufruft.