como fazer compatibilidade entre duas partes trabalhando em diferentes versões do jdk
-
15-09-2020 - |
Pergunta
Meu projeto é construído em 1.4.2 JDK.Agora ele irá interagir com um jar de terceiros, construído em JDK 1.6
Estou tendo problemas de compatibilidade ao usar classes de cliente.É possível resolvê-lo sem atualizar meu JDK para 1.6 ou reconstruir o jar de terceiros em 1.4.2
Solução
Você não pode executar uma classe compilada com JDK 1.6 no JDK 1.4 anterior porque você obterá um java.lang.UnsupportedClassVersionError
exceção.Isso ocorre porque Java não é compatível com versões futuras, é apenas compatível com versões anteriores (consulte especificação).
Para verificar isso, instalei o JDK 1.4.2.19 e o JDK 1.6.0.23 e escrevi um aplicativo de exemplo:
public class HelloWorld { public static void main(String[] args) { System.out.println("Hello world!"); } }
Construído com JDK 1.6.0.23:
../1.6.0.23/bin/javac HelloWorld.java
E execute-o com JDK 1.4.2.19:
../1.4.2.19/bin/java HelloWorld
Saída:
Exception in thread "main" java.lang.Erro de classe não suportado: HelloWorld (Versão major.minor não suportada 50.0) at java.lang.ClassLoader.defineClass0(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:539) ...
Solução:Você pode tentar reconstruir seu aplicativo de terceiros com JDK 1.4 se ele não chamar métodos introduzidos em 1.6 (e 1.5).