Как сделать совместимость между двумя сторонами, работающими на разных версиях 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).