2016-09-22 3 views
0

Я пытаюсь оптимизировать/обфускать проект Java с помощью ProGuard. Я извлекаю проект как runnable jar from eclipse, и он работает отлично.Ошибка при запутывании Java-кода с помощью ProGuard

Когда я пытаюсь сжать его с ProGuard, я получаю тысячи предупреждения и ошибок, в частности, в конце:

Note: there were 1 classes trying to access generic signatures using reflection. 
     You should consider keeping the signature attributes 
     (using '-keepattributes Signature'). 

Note: there were 14 unresolved dynamic references to classes or interfaces. 
     You should check if you need to specify additional program jars. 
Note: there were 2 class casts of dynamically created class instances. 
     You might consider explicitly keeping the mentioned classes and/or 
     their implementations (using '-keep'). 

Note: there were 15 accesses to class members by means of introspection. 
     You should consider explicitly keeping the mentioned class members 
     (using '-keep' or '-keepclassmembers'). 

Warning: there were 13229 unresolved references to classes or interfaces. 
     You may need to add missing library jars or update their versions. 
     If your code works fine without the missing classes, you can suppress 
     the warnings with '-dontwarn' options. 
Warning: there were 61 instances of library classes depending on program classes. 
     You must avoid such dependencies, since the program classes will 
     be processed, while the library classes will remain unchanged. 
Warning: there were 18 unresolved references to program class members. 
     Your input classes appear to be inconsistent. 
     You may need to recompile the code. 

Внешний ЛИЭС я использовал в проекте добавляет к банку при экспорте его от затмения. («Извлечь необходимые библиотеки в банку»). Я не использовал опцию «repack to jar», потому что она действительно замедляет банки.

В ЛИЭС, в частности, являются:

import org.apache.poi.ss.usermodel.Row; 
import org.apache.poi.ss.usermodel.Sheet; 
import org.apache.poi.ss.usermodel.Workbook; 
import org.apache.poi.ss.usermodel.WorkbookFactory; 
import org.apache.poi.xssf.usermodel.XSSFWorkbook; 

Могу ли я сделать что-то fondamentally здесь не так?

Я пробовал без успеха предложения proguard, и мой код компилируется в eclipse без предупреждений.

Это очень большой проект, поэтому я не могу предоставить MCVE, но если кто-то может указать мне в правильном направлении здесь, что мне не хватает, я бы очень признателен.

Пример предупреждения: (Он идет для каждого метода)

http://pastebin.com/m9hX9LJA

Очевидно, что это может быть слишком общей проблемы для вас, ребята, чтобы исправить, но я мог бы делать некоторые крупные очевидно ошибка, которую я не понимаю, вот что я собираюсь сделать с этим.

ответ

0

Примечания - это всего лишь предложения, но предупреждения указывают на несоответствия во входных данных. Примечательно, что 13229 нерешенных ссылок показывают, что вы предоставляете основной код своего приложения (с -injars), но не его библиотеки (с -injars или -libraryjars). Я не знаю параметров Eclipse Extract или Repack, но вы должны проверить содержимое своих входных банок.

См. Руководство по ProGuard> Поиск и устранение неисправностей>Warning: can't find referenced class.

 Смежные вопросы

  • Нет связанных вопросов^_^