Java от 1.5 до 1.4

Как лучше всего преобразовать существующую банку (без исходного кода), написанную на java 1.5, в java 1.4.x?

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
6
0
1 080
6

Ответы 6

Вы можете декомпилировать его, а затем перекомпилировать. Вероятно, вам придется вручную устранять несовместимости. Вот ветка на java декомпиляторы.

Моим инстинктом было бы декомпилировать jar, а затем перекомпилировать как 1.4.

Если в декомпилированном коде нет конкретных вызовов API версии 1.5, все должно работать нормально. Если есть, вам нужно будет переделать эти разделы для работы в более ранней версии Java.

Взгляните на Retroweaver. Он преобразует классы или jar, чтобы его можно было запускать с использованием 1.4 JRE. В зависимости от используемых функций версии 1.5 вам не потребуется дополнительная среда выполнения Retroweaver.

Retroweaver использует улучшение байтового кода. Звучит загадочно, но работает.

Помимо декомпиляции вам, вероятно, придется реорганизовать несколько вещей в исходном коде - перечисления, дженерики (я не думаю, что дженерики будут в декомпилированном коде, но это, вероятно, означает, что вам не хватает некоторых приведений), бокс / распаковка и т. д. и т. д.

как сказал Родеоклоун,
1) разархивируйте JAR

2) используйте декомпилятор, такой как jad (http://www.kpdus.com/jad.html), используя такие параметры jad -d src -f -ff -s .java -space -t4 ***. класс

3) и из сгенерированных исходных файлов скомпилируйте их с помощью JDK 1.4 javac.

4) если компилятор 1.4 работает нормально, перекомпоновать в новую банку

5) если у компилятора 1.4 есть проблемы, вам нужно использовать
retroweaver (http://retroweaver.sourceforge.net/index.html).
В некоторых случаях это может сработать, НО если класс ожидает изменений в JVM, тогда вы находитесь в трудном положении. Если классы используют новые средства потоковой передачи, вы можете использовать версию util.concurrent для JDK 1.4 из http://g.oswego.edu/dl/classes/EDU/oswego/cs/dl/util/concurrent/intro.html.

Удачи!

ретротранслятор - еще один вариант, похожий на retroweaver

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