2015-05-07 2 views
2

Я использую Apache Ant для создания моего проекта java в 1 большой файл Jar. Я хотел бы знать, есть ли способ изменить видимость (от private/protected> PUBLIC) всех классов, полей и методов?Изменить видимость на компиляции

Итак, в моем исходном коде у меня все равно будет различная видимость, но конечный продукт (jar, который я создаю Ant) будет иметь все открытое для публики.

Я проверил java obfuscators (proguard, yGuard), но они, похоже, не допускают такой возможности.

Можно ли это сделать? Может ли кто-нибудь помочь?

+0

Должно быть выполнимо с помощью простой манипуляции байт-кода. Очевидный вопрос: почему вы хотите это сделать? –

+0

Что вы пытаетесь сделать? Код, который вы хотите в качестве конечного продукта. –

+0

Есть ли какие-нибудь руководства, как делать такие манипуляции с байтовым кодом? Я пытаюсь сделать это, чтобы иметь возможность видеть и изменять каждое значение без использования отладки. –

ответ

0

Если вы все еще хотите сделать это, сделав общедоступным (и не хотите использовать отражение), вы можете использовать ant replace. Вы просто создать новый каталог, как «temporarysrc» и скопировать все из вас Java там файлов, а затем вызвать эту задачу + скомпилировать результат с JAVAC:

<replace dir="${tmpsrc}" token="private" value="public"> 
     <include name="**/*.java"/> 
</replace> 

Это будет не пуленепробиваемым, потому что если у вас есть какие-то методы , переменные, которые содержат слово «частный», что испортит все. Более того, если у вас есть классы с несколькими классами, тогда будет несколько открытых классов, то есть ошибка.

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

Только для записи: это только для экспериментов :)

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