Come apportare compatibilità tra due parti che lavorano su diverse versioni JDK
-
15-09-2020 - |
Domanda
Il mio progetto è costruito in 1.4.2 JDK. Ora interagirà con un barattolo di terze parti, costruire in JDK 1.6
Sto ricevendo problemi di compatibilità durante l'utilizzo delle classi del cliente. È possibile risolverlo senza aggiornare il mio JDK a 1.6 o ricostruire il barattolo di terze parti in 1.4.2
Soluzione
Non è possibile eseguire una classe compilata con JDK 1.6 sul precedente JDK 1.4 perché avrai un'eccezione java.lang.UnsupportedClassVersionError
.Ciò è dovuto a Java non è compatibile in modo compatibile, è proprio arretrato compatibile (vedere Specifica ).
Per verificarlo ho installato JDK 1.4.2.19 e JDK 1.6.0.23 e ha scritto un'applicazione di esempio:
public class HelloWorld { public static void main(String[] args) { System.out.println("Hello world!"); } }.
Lo ha costruito con JDK 1.6.0.23:
../1.6.0.23/bin/javac HelloWorld.java
.
e eseguilo con JDK 1.4.2.19:
../1.4.2.19/bin/java HelloWorld
.
Uscita:
Exception in thread "main" java.lang.UnsupportedClassVersionError: HelloWorld (Unsupported major.minor version 50.0) at java.lang.ClassLoader.defineClass0(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:539) ....
Soluzione : È possibile provare a ricostruire la tua applicazione di terze parti con JDK 1.4 se non chiama metodi introdotti in 1.6 (e 1,5).