Proguard: RuntimeException после запутывания - PullRequest
0 голосов
/ 30 декабря 2018

Я создаю Java-приложение в Intellij Idea (без использования gradle / maven), которое использует JCEF (Java Chromium Embedded Framework).Программа зависит от нескольких собственных библиотек и некоторых других jar-файлов.Структура каталогов выглядит примерно так:

-assets
-blob_storage
-cache
-cert
-rel
-sample-data
debug.log
lastmsg.dat
preferences.json
app.jar
app-ob.jar

Все остальные каталоги незначительны, но rel.rel содержит все собственные dll, необходимые для запуска Jcef.app.jar - это не скрытая версия банки, сгенерированная Intellij Idea, а app-ob.jar - та же банка, скрытая с помощью proguard.Проблема, с которой я сейчас сталкиваюсь, заключается в том, что обфусцированная версия jar выдает RuntimeException, который фактически должен быть выброшен, если preferences.json либо недоступен, либо имеет значения полей с пустыми строками.Чистая, не запутанная банка работает без проблем.Мой config.pro файл выглядит примерно так:

-injars app.jar
-outjars app-ob.jar
-libraryjars C:\Program Files\Java\jre1.8.0_161\lib\rt.jar
-keepattributes SourceFile,Signature,LineNumberTable,Exceptions, *Annotation*
-dontoptimize
-keepdirectories
-keep public class application.MainFrame {
    public static void main(java.lang.String[]);
}

Я запускаю это с помощью следующей команды: C:\Users\Devashish\Desktop\proguard6.0.3\bin>proguard @config.pro -dontwarn

Другие зависимости JAR (например, Gson и Commons-exec)упакованный в файл фляги Intellij.Я хотел бы отметить, что без -dontwarn proguard выдает предупреждение, в котором говорится что-то вроде 17 References are not found и Code is inconsistent, но неосвещенная версия банки работает нормально, поэтому я просто добавил -dontwarn.Может кто-нибудь помочь мне, что происходит.Или я должен добавить дополнительную информацию (в этом случае, пожалуйста, дайте мне знать в комментариях)?

...