Android Proguard java.io.IOException:无法读取[proguard.ClassPathEntry

问题描述 投票:12回答:5

大家好为Android启用proguard时,在构建已签名的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)

无法在网上找到任何相关内容。有任何想法吗?

android proguard
5个回答
7
投票

ProGuard无法找到(或读取)其中一个输入罐。如果您安装ProGuard 4.5.1而不是4.4,它将打印出正确的文件名,以便您可以找到它丢失的原因。


5
投票

下载最新的ProGuard,并使用您下载的新文件夹替换基本sdk工具文件夹(例如c:/ android-sdk / tools / proguard)中现有的lib文件夹。

就像埃里克所说的那样,它会告诉你什么是遗漏的。很可能你在-libraryjars命令中使用了错误的路径。尝试删除


3
投票

更新ProGuard确实有助于追踪问题。在我的情况下,它与我的Mac上的JDK配置和rt.jar和jsse.jar文件不在通常的位置。

我找到了解决方案here

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

2
投票

检查.jar的路径名中是否有空格。我刚刚遇到同样的问题,升级到ProGuard 4.6并在错误消息中获得了更多信息,但问题仍然存在。然后我想也许是因为我的路径名中的空格,我将路径名中的所有空格字符替换为“ - ”,ProGuard再次像魅力一样工作:)


0
投票

在JDK1.8中,两个JAR文件位于Proguard所期望的不同位置,symlinking它们修复它:

cd $JAVA_HOME/lib
sudo ln -s ../jre/lib/rt.jar 
sudo ln -s ../jre/lib/jsse.jar
© www.soinside.com 2019 - 2024. All rights reserved.