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




Вы можете декомпилировать его, а затем перекомпилировать. Вероятно, вам придется вручную устранять несовместимости. Вот ветка на 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