Как сделать совместимость между двумя сторонами, работающими на разных версиях JDK - PullRequest
1 голос
/ 13 июля 2010

Мой проект построен в 1.4.2 JDK. Теперь он будет взаимодействовать со сторонним jar, встроенным в JDK 1.6

.

У меня проблема совместимости при использовании клиентских классов. Можно ли решить эту проблему, не обновляя JDK до 1.6 и не перестраивая сторонний jar в 1.4.2

1 Ответ

1 голос
/ 21 января 2011

Вы не можете запустить класс, скомпилированный с JDK 1.6 на предыдущем JDK 1.4, потому что вы получите исключение java.lang.UnsupportedClassVersionError. Это связано с тем, что Java несовместима с прямой совместимостью, она просто обратно совместима (см. спецификация ).

Для проверки я установил JDK 1.4.2.19 и JDK 1.6.0.23 и написал пример приложения:

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

Построил это с JDK 1.6.0.23:

 ../1.6.0.23/bin/javac HelloWorld.java

И запустить его с JDK 1.4.2.19:

../1.4.2.19/bin/java HelloWorld

Выход:

Exception in thread "main" java.lang.<b>UnsupportedClassVersionError</b>: HelloWorld
(<b>Unsupported major.minor version</b> 50.0)
      at java.lang.ClassLoader.defineClass0(Native Method)
      at java.lang.ClassLoader.defineClass(ClassLoader.java:539)
        ...


Решение : Вы можете попытаться перестроить ваше стороннее приложение с JDK 1.4, если оно не вызывает методы, представленные в 1.6 (и 1.5).

...