Как сделать совместимость между двумя сторонами, работающими на разных версиях JDK

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

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

1 ответ

Решение

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

Чтобы проверить это, я установил JDK 1.4.2.19 и JDK 1.6.0.23 и написал пример приложения:

открытый класс HelloWorld {
    public static void main(String[] args) {
            System.out.println("Привет, мир!");
    }
}

Построил это с 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

Выход:

Исключение в теме "основной" java.lang.UnsupportedClassVersionError: HelloWorld
(Неподдерживаемая версия major.minor 50.0)
      в java.lang.ClassLoader.defineClass0(собственный метод)
      в java.lang.ClassLoader.defineClass(ClassLoader.java:539)
        ...


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

Другие вопросы по тегам