Я выбрал ProGuard, и вот параметры, с которыми я его настроил:
Уменьшение
Параметры:
- Сокращать
Сохранить:
- Приложения
- Апплеты
Также сохраните:
- Перечисления
- Драйверы базы данных
- Swing UI L&F
Обфускация
Параметры:
- Затемнить (да!: P)
- Агрессивно перегрузить
- Используйте уникальные имена членов класса
- Используйте имена классов со смешанным регистром
- Сглаживание иерархии пакетов
- Переупаковка классов
Сохранить имена:
- имена собственных методов
- имена методов .class
Оптимизация
Параметры:
- Оптимизировать
- Агрессивное слияние интерфейсов
Удалить:
- [Все флажки отмечены]
Информация
Предварительная проверка и таргетинг:
- Предварительная проверка
Последовательность и правильность:
- Обратите внимание на возможные ошибки в конфигурации
- Предупредить о возможном ошибочном вводе
- Пропускать членов класса непубличной библиотеки
и когда я беру банку и ставлю ее так:
При запуске я получаю эту ошибку апплета:
java.lang.RuntimeException: java.lang.NoClassDefFoundError: b at sun.plugin2.applet.Plugin2Manager.createApplet(Unknown Source) at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source) at java.lang.Thread.run(Unknown Source) Caused by: java.lang.NoClassDefFoundError: b at java.lang.Class.getDeclaredConstructors0(Native Method) at java.lang.Class.privateGetDeclaredConstructors(Unknown Source) at java.lang.Class.getConstructor0(Unknown Source) at java.lang.Class.newInstance0(Unknown Source) at java.lang.Class.newInstance(Unknown Source) at sun.plugin2.applet.Plugin2Manager$12.run(Unknown Source) at java.awt.event.InvocationEvent.dispatch(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source) Caused by: java.lang.ClassNotFoundException: b at sun.plugin2.applet.Applet2ClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) ... 14 more Caused by: java.io.IOException: open HTTP connection failed:http://mystikrpg.com/b.class at sun.plugin2.applet.Applet2ClassLoader.getBytes(Unknown Source) at sun.plugin2.applet.Applet2ClassLoader.access$000(Unknown Source) at sun.plugin2.applet.Applet2ClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) ... 17 more Exception: java.lang.RuntimeException: java.lang.NoClassDefFoundError: b
Вот что находится ВНУТРИ файла jar ДО запутывания clientOffline.jar
:
line_tile/
META-INF/
и вот что представляет собой этот jar-файл ПОСЛЕ обфускации newOne.jar
:
line_tile/
META-INF/
weapon/
me.gif
a.class
b.class
Надеюсь, этого достаточно, чтобы помочь мне решить эту проблему. Что я делаю неправильно?