2009-11-14 5 views
1

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

Я играл с javap, но не смог найти ассемблер для Java 1.6. Я также попытался декомпилировать код с JD, но он никогда не получал его правильно, и он не собирался компилироваться.

+0

Вы ищете декомпилятор или иной подход к решению? –

+0

JD был единственным компилятором, который, казалось, все еще поддерживался, все остальные были с 90-х, и я не ожидал, что они будут работать с 1.6. Но я не собираюсь выбирать, я действительно ищу решение. –

+0

Чувак ... OSGI мужчина !! –

ответ

1

Еще одна вещь, которую следует учитывать вместо ручной модификации классов, - это использовать магию макета класса. Я никогда не делал этого сам, но прочитал немного об этом. Существует статья о devx, которая объясняет, как load multiple versions of classes.

+0

Это было рассмотрено, но мы решили, что если мы хотим начать многозначительно для загрузчиков классов, мы должны просто сделать это правильно и использовать OSGI. К сожалению, настало время реализовать это. –

1

Вы можете использовать пакет с открытым исходным кодом: JclLoader, который помогает при загрузке различных версий одной и той же банки. Это также необходимо в одной из наших систем для проведения тестирования.

Ссылка: http://sourceforge.net/projects/jcloader/

Смежные вопросы