【问题标题】:Android Proguard java.io.IOException: Can't read [proguard.ClassPathEntryAndroid Proguard java.io.IOException:无法读取 [proguard.ClassPathEntry
【发布时间】:2011-02-03 09:41:47
【问题描述】:

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


    【解决方案1】:

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

    【讨论】:

    • @Eric:您能否提供有关如何处理以下错误的提示:java.io.IOException:无法读取 [C:\Users\myname\AppData\Local\Temp\' E:\Program Files\android-sdks\platforms\android-15\android.jar'] (没有这样的文件或目录)?我想知道为什么使用 C:\Users\myname\AppData\Local\Temp\。
    【解决方案2】:

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

    就像 Eric 所说的那样,它会告诉你缺少什么。您很可能在 -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 .
      

      【讨论】:

      • 我在 Mac 上确认问题和此解决方案
      • 在 Java1.8 中,这些 jars 位于 $JAVA_HOME/jre/lib/
      【解决方案4】:

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

      【讨论】:

        【解决方案5】:

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2019-06-26
          • 2023-03-16
          • 2016-04-21
          • 1970-01-01
          • 1970-01-01
          • 2016-04-07
          • 2017-05-21
          相关资源
          最近更新 更多