| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java: Общие вопросы > Проблемы декомпиляции |
| Автор: Atum 20.8.2012, 17:16 | ||||
| Вопрос возник такой : в классе есть поле - public final static String OAuthConsumerKey = "key26"; при этом при создании оно используется setter
что заметил : после компиляции (произвел де компиляцию класса ) и увидел что значение строено в код
теперь как бы мы не изменяли значение - OAuthConsumerKey - в коде оно всегда будет равно старому значению ... т.е. засело там навсегда ... Как с таким бороться ? пока только пришла в голову идея использовать getter для OAuthConsumerKey ключа .... чтобы изменяя значение ключа изменялось его значение в откомпилированном коде ... как бороться со статик полями ? |
| Автор: AntonSaburov 22.8.2012, 17:12 |
| Не надо задавать вопросы с теме, которая создана для другого. Теперь по сути вопроса - прблема в оптимизации компилятора. Он сам заменяет константы в коде. Так что декомпилятор выдает уже результат декомпиляции оптимизированного кода. И честно не понятно, что имелось с виду под "как с этим бороться". Обычно люди код декомпилируют не для того, чтобы его снова править. Может можно выставить какие-то параметра декомпилятора. Или запускать рефакторинг. |
| Автор: Atum 3.9.2012, 11:50 |
| Проблема в том что после пересбоки jsp страницы (аналогично с jar арихивом) - и выкладки его на сервер - значение в сервере остается старое - т.е "key26" ,в скомпиллиных классах он считает что значение не изменилось - раз оно было задано как final static . (Замечено на томкате, резине и гласфише). поэтому приходится удалять из серверных папок скомпиленые им классы руками . |
| Автор: math64 3.9.2012, 13:21 |
| Убери final - оптимизации не будет. |
| Автор: Atum 25.11.2012, 19:18 | ||||
!!!Спасибо ! сам до этого тогда не дошел ! это как раз то решение которое я и искал! еще раз спасибо . действительно либо intern() либо через getter |