Java: есть ли инструмент, позволяющий сделать код (в стороннем JAR) совместимым с предыдущими версиями (1.4 - 1.6) - PullRequest
1 голос
/ 13 мая 2009

У меня есть сторонний JAR-файл, скомпилированный с использованием Java 1.4. Есть ли инструмент, который может сделать JAR-файл совместимым с Java 1.6? (Что-то вроде «ретротранслятора», но что делает наоборот).
Я попытался декомпилировать файлы классов и перекомпилировать их в 1.6, но это не удалось.


Вот вопрос:

Мой проект использует «rsadapter.jar» для версии 5.1, и у меня была настройка проекта в Eclipse 2.0 + JDK 1.4, и она работала нормально. Теперь я перешел на Java 1.6 и Eclipse Ganymede (согласно требованиям), и тот же проект (точно такой же настройки) начал жаловаться на отсутствующие файлы классов в «rsadapter.jar». Я также поместил JAR в classpath явно, но он все еще не мог загрузить классы. Затем я изменил версию компилятора Java на 1.4, и он начал работать.

С уважением,
- Ашиш

Ответы [ 3 ]

5 голосов
/ 13 мая 2009

Классы, скомпилированные JDK 1.4, должны использоваться в среде исполнения Java 6 как есть. Если вы действительно столкнулись с проблемой, пожалуйста, опишите ее.


Обновление: Я могу воспроизвести это только с типами в пакете «по умолчанию» (то есть не в пакете). Классы, которые вы пытаетесь использовать в пакете по умолчанию? Кроме того, это происходит со мной независимо от версии JDK, используемой для компиляции.


Обновление: Хорошо, после небольшого исследования я понял, что вы никогда не можете ссылаться на тип в неназванном пакете из именованного пакета. Имеет смысл, но определенно не то, с чем вы сталкиваетесь.

Я могу скомпилировать код в JDK 1.4.2_19 и использовать его прекрасно в проекте Java 6 Eclipse. Я думаю, что эта проблема специфична для вашей среды. В этой ситуации я бы сделал резервную копию Eclipse и заново создал все (установка JDK, рабочее пространство, проекты) с нуля, чтобы посмотреть, смогу ли я его очистить.

1 голос
/ 14 мая 2009

У меня была еще одна проблема с некоторым унаследованным кодом, написанным на Java 1.4.x: авторам нравились перечисления и они любили называть соответствующие переменные enum. Они даже использовали это для имен пакетов. И это не позволяет компилировать код под Java 1.5 (или выше) достаточно успешно.

Изменение , что автоматически является довольно серьезной проблемой.

0 голосов
/ 14 мая 2009

Может быть, вы определили Eclipse для выдачи ошибок компилятора при использовании устаревших методов или классов?

...