Подтвердить что ты не робот

Рука Редактировать Jar для изменения имен пакетов

У меня есть файл jar из внешнего источника. Все классы в банке находятся в пакете com.xyz.

Я хотел бы переместить все классы в пакет com.xyzold.

Это просто, как распаковать банку, переименовать xzy-папку в xyzold и перерисовать ее, или мне нужно также изменить каждый файл класса?


Здесь мое решение, используя Jar Jar Links

java -jar jarjar-1.4.jar process rules.txt google-collections-1.0.jar google-collections-old-1.0.jar

И вот содержимое моего файла rules.txt:

rule com.google.** [email protected]
4b9b3361

Ответ 1

Вы можете использовать Jar Jar Links для достижения этого. Также вам не нужен исходный код классов, которые вы хотите изменить, так как программа делает это на уровне байт-кода (т.е. Он напрямую модифицирует файлы .class.)

Ответ 2

Вы должны взглянуть на Jar Jar Links. (Я не беру никакой ответственности за имя:).)

Его основной случай использования заключается в том, чтобы встроить внешние банки в свою собственную банку, и для этого он может переименовать существующие пакеты. Он изменяет необходимый байтовый код. Возможно, вы сможете настроить его, чтобы делать то, что хотите.

Ответ 3

Вы можете использовать плагин Maven shade, чтобы сделать это в сборке Maven.

Ответ 4

Возможно, вы можете сделать это с помощью Profuscator ProGuard. Он, безусловно, может перемещать код в пакетах и ​​работает на уровне байтового кода. Его основная цель - обфускация, хотя, возможно, сначала нужно рассмотреть один из других вариантов.

Ответ 5

Нет, вам нужно изменить все классы в файле jar. Для изменения пакета необходимо иметь исходный код.

Ответ 6

Вам также потребуется изменить все исходные файлы Java. Не только имена пакетов, но и импорт, и любые возможные встроенные объявления. На самом деле это не стоит.