Как понизить версию файла jar без проекта?

У меня есть старый файл jar с моей библиотекой, в которой используется jdk 1.7.0_03. Но на моем новом компьютере у меня не было подходящей версии jdk. Моя текущая версия 1.6. Можно ли понизить версию файла jar (1.7 -> 1.6) без исходных файлов проекта, чтобы мой файл jar мог работать на java 1.6?


person Alex    schedule 19.11.2013    source источник
comment
Это невозможно из-за компилируемого кода. Единственным решением было бы получить 1.7   -  person Peter_James    schedule 19.11.2013


Ответы (4)


Вы можете попробовать распаковать файл jar с помощью инструмента CLI «jar» и изменить версию в файле манифеста. Затем нужно снова перепаковать файл. Это сработало для меня однажды с OSGi Bundle.

person 0xAffe    schedule 19.11.2013
comment
Это вряд ли сработает. Или, точнее, это будет работать только в том случае, если классы уже скомпилированы для цели Java 1.6. - person Stephen C; 20.11.2013

Вы не можете понизить версию файла .jar, поскольку он содержит скомпилированный код. Если этот код использует функции 1.7, вы застряли. Вы можете попробовать запустить его на 1.6. Если вам повезет, это сработает.

person Adam Arold    schedule 19.11.2013

Можно ли понизить версию файла jar

Нет, вам нужно перекомпилировать JAR

без исходных файлов проекта

Вам нужен исходный файл для перекомпиляции. вы можете декомпилировать файлы классов, но это не так просто

person Philipp Sander    schedule 19.11.2013

Вам нужен инструмент обратного переноса байт-кода. Хотя такие инструменты существуют, нет ни одного (AFAIK), который преобразует байт-коды Java 7 в Java 6 или более ранние версии.

Кстати, использование команды jar для замены манифеста не поможет. Формат файла классов Java имеет версию, и номер версии изменился между 1.6 и 1.7. Java 6 JVM не может справиться с файлом класса Java 1.7 (или более поздней версии) независимо от манифеста JAR.

person Stephen C    schedule 19.11.2013
comment
@JaseC - это тебя не касается. - person Stephen C; 20.11.2013