Я создаю 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
.Может кто-нибудь помочь мне, что происходит.Или я должен добавить дополнительную информацию (в этом случае, пожалуйста, дайте мне знать в комментариях)?