Эта проблема была решена с помощью комментариев:
Нужно было перекомпилировать java с правильной целевой версией. В моем случае javac -source 1.3 -target 1.3
вместо простого javac
сделал свое дело.
Описание проблемы:
У меня есть скомпилированная .jar java-программа, в которой необходимо изменить одну строку URL-адреса. Используя JD, я смог декомпилировать код и внести изменения.
Поскольку я хотел бы избежать перекомпиляции всего проекта, я подумал, что могу просто перекомпилировать один файл .java, который я изменил, в .class и заменить им оригинал.
Однако после переупаковки jar программа запускается, но функциональные возможности, использующие код, который я изменил, ведут себя беспорядочно.
В логе нахожу:
E EventDispatchThreadExceptionHandler:Unhandled exception occurred during event dispatching.::
java.util.MissingResourceException: Can't find bundle for base name com.myCompany.mySoftware.resources.ModuleResources, locale en_US
at java.util.ResourceBundle.throwMissingResourceException(ResourceBundle.java:842)
ModuleResources.java - это файл, который я изменил...
Анализ проблемы:
- Переупаковка не при чем: если извлекать и перепаковывать оригинальную банку, то все работает.
- Моя модификация также не кажется проблемой: когда я перекомпилирую JD-декомпилированный java-файл и использую полученный файл класса для переупаковки, я получаю тот же сбой.
Я декомпилировал переупакованный файл jar и сравнил его с декомпиляцией исходного файла jar: в файле, который я изменил (по крайней мере), код кажется идентичным, НО JD показывает разные номера строк. Может ли это намекнуть на проблему?
Любая помощь будет принята с благодарностью.
Большое спасибо!