Android Proguard java.io.IOException: не могу прочитать [proguard.ClassPathEntry - PullRequest
12 голосов
/ 03 февраля 2011

Привет всем При включении Proguard для Android, при создании подписанного JAR я получаю следующий дамп:

[2011-02-03 11:28:27 - VideoCreator] Proguard returned with error code 1. See console
[2011-02-03 11:28:27 - VideoCreator] java.io.IOException: Can't read [proguard.ClassPathEntry@49b290] (No such file or directory)
[2011-02-03 11:28:27 - VideoCreator]    at proguard.InputReader.readInput(InputReader.java:230)
[2011-02-03 11:28:27 - VideoCreator]    at proguard.InputReader.readInput(InputReader.java:200)
[2011-02-03 11:28:27 - VideoCreator]    at proguard.InputReader.readInput(InputReader.java:178)
[2011-02-03 11:28:27 - VideoCreator]    at proguard.InputReader.execute(InputReader.java:100)
[2011-02-03 11:28:27 - VideoCreator]    at proguard.ProGuard.readInput(ProGuard.java:195)
[2011-02-03 11:28:27 - VideoCreator]    at proguard.ProGuard.execute(ProGuard.java:78)
[2011-02-03 11:28:27 - VideoCreator]    at proguard.ProGuard.main(ProGuard.java:499)

Не могу найти в сети ничего актуального. Есть идеи?

Ответы [ 5 ]

7 голосов
/ 05 февраля 2011

ProGuard не может найти (или прочитать) один из входных jar. Если вы установите ProGuard 4.5.1 вместо 4.4, он выведет правильное имя файла, чтобы вы могли узнать, почему он отсутствует.

5 голосов
/ 02 июня 2011

Загрузите последнюю версию ProGuard и замените существующую папку lib в своей базовой папке sdk tools (например, c: / android-sdk / tools / proguard) на новую, которую вы скачали.

Как сказал Эрик, он скажет вам, чего не хватает. Скорее всего, вы использовали неправильный путь в команде -libraryjars. Попробуйте удалить

3 голосов
/ 10 февраля 2012

Обновление ProGuard помогло отследить проблему.В моем случае это было связано с конфигурацией JDK на моем Mac, а файлы rt.jar и jsse.jar не находились в обычном месте.

Я нашел решение здесь .

cd $JAVA_HOME/lib
sudo ln -s ../../Classes/classes.jar rt.jar
sudo ln -s ../../Classes/jsse.jar .
2 голосов
/ 14 ноября 2011

Проверьте, есть ли у вас пробелы в имени пути .jar. Я только что столкнулся с этой же проблемой, обновился до ProGuard 4.6 и получил больше информации в сообщении об ошибке, но проблема сохранилась. Тогда я подумал, что это может быть из-за пробелов в имени пути, я заменил все пробелы в имени пути на "-", ProGuard снова заработал как шарм :)

0 голосов
/ 25 марта 2019

В JDK1.8 два из файлов JAR находятся в другом месте, где Proguard ожидает их, символическая ссылка исправляет это:

cd $JAVA_HOME/lib
sudo ln -s ../jre/lib/rt.jar 
sudo ln -s ../jre/lib/jsse.jar
...