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

时间:2011-02-03 09:41:48

标签: android proguard

大家好 当为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)

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

5 个答案:

答案 0 :(得分:7)

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

答案 1 :(得分:5)

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

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

答案 2 :(得分: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 .

答案 3 :(得分:2)

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

答案 4 :(得分:0)

在JDK1.8中,两个JAR文件与Proguard期望的位置不同,通过符号链接对其进行修复:

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