Как упаковать файлы .class из пакета по умолчанию, используя jarjar? - PullRequest
4 голосов
/ 18 ноября 2011

Можно ли переместить файлы .class в банку из пакета по умолчанию в другой именованный пакет, чтобы я мог их импортировать и использовать?

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

Итак, мой вопрос: как использовать jarjar для переупаковки файлов .class из пакета по умолчанию в другой именованный пакет?

РЕДАКТИРОВАТЬ: Я хочу кое-что уточнить - у меня нет источников банку, которую я хочу переупаковать, так что я не знаю, как я мог бы перекомпилировать код. Запутывание и размышления исключены.

РЕДАКТИРОВАТЬ 2: кажется, это очень просто сделать с помощью jarjar :) java -jar jarjar.jar обработать правила.rules in.jar out.jar

rules.rules выглядит примерно так: правила нет.ylivay.src.a

Проблема решена!

Ответы [ 2 ]

1 голос
/ 18 ноября 2011

Чтобы переместить классы в другой пакет, вам нужно не только изменить их расположение в структуре каталогов jar (или файловой системы), вы также должны изменить объявление package в исходных файлах, а затем перекомпилировать классы.

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

Альтернативой может быть создание прокси-классов, которые вызывают те, которые вам нужны, в пакете по умолчаниюиспользуя отражение.Но это не только неприятно, но вы говорите, что об рефлексии не может быть и речи.

То есть вы не можете делать то, что хотите.

1 голос
/ 18 ноября 2011

вам нужно потом перекомпилировать, чтобы изменить пакет - простое перемещение файлов класса внутри jar (или снаружи) вам не поможет.

...