【问题标题】:Error when running sbt install-emulator运行 sbt install-emulator 时出错
【发布时间】:2011-12-04 03:43:09
【问题描述】:

我正在关注此页面上的视频http://zegoggl.es/2009/12/building-android-apps-in-scala-with-sbt.html,它使用 SBT 创建一个 Android 项目。但是我到了尝试使用

安装模拟器的地步
sbt install-emulator

我收到以下错误:

    [info] Nothing to compile.
    [info]   Post-analysis: 1 classes.
    [info] == tests / compile ==
    [info]
    [info] == awesomepad / proguard ==
    ProGuard, version 4.4
    ProGuard is released under the GNU General Public License. The authors of all
    programs or plugins that link to it (sbt, ...) therefore
    must ensure that these programs carry the GNU General Public License as well.
    Reading program directory [C:\Projects\Scala\sbt2test\awesomepad\target\scala_2.
    9.1\classes]
    java.io.IOException: Can't read [proguard.ClassPathEntry@550a17fb] (Can't proces
    s class [com/kickass/awesomepad/R$attr.class] (Unsupported version number [51.0]
     for class format))
            at proguard.InputReader.readInput(InputReader.java:230)
            at proguard.InputReader.readInput(InputReader.java:200)
            at proguard.InputReader.readInput(InputReader.java:178)
            at proguard.InputReader.execute(InputReader.java:78)
            at proguard.ProGuard.readInput(ProGuard.java:195)

【问题讨论】:

  • 您解决问题了吗?我遇到了同样的问题,想知道你是怎么做到的。

标签: java android scala sbt sbt-android-plugin


【解决方案1】:

我有同样的问题。我意识到这是因为我使用的是 JDK 1.7。虽然使用 1.6 创建的 jars 可以在 1.7 上运行,但 1.6 jars 的 proguard 不适用于 1.7 jars。目前,只有 Proguard 的 beta 版本可用于 1.7。因此,android 工具和 maven 存储库具有适用于 1.6 jar 的 proguard。当它尝试修剪 1.7 jars 时,它会抛出该错误。

为了解决这个问题,我降级到 JDK 1.6,卸载 1.7 并确保我的 jar 是由 1.6 JDK 工具创建的。

要从本地存储库中删除 1.7 jar,我只是删除了 ~/.ivy2 下的目录并使用插件重新创建了 android 项目。我只是按照 android 插件的 README 到 tee。

【讨论】:

  • 有关于支持 java 1.7 的消息吗?
【解决方案2】:

正如您链接到的页面所说,“注意:这篇文章已经有一段时间没有更新并且已经过时了。如有疑问,请参阅 sbt-android-plugin 的 README。”那里的自述文件 (README.md) 包含我能够找到的唯一一组指令,这些指令实际上适用于当前版本的 scala、sbt 和 Android SDK。

我只需要做一些小的调整就可以让它工作:

  1. 修改你的 sbt 脚本(可能是 ~/bin/sbt)并添加一个“-XX:MaxPermSize=512m”参数,否则你会用完 PermGen 空间
  2. 确保使用 0.10 模板(默认)而不是您可以选择指定的 0.11 模板。
  3. 请确保您跳到“破解插件”部分,当它告诉您这样做时。

希望这会有所帮助。

【讨论】:

    【解决方案3】:

    对我来说,插件网站上的描述就足够了:link

    你试过那样做吗?

    【讨论】:

      【解决方案4】:

      因为显然jdk1.7不兼容,所以我遇到了同样的问题。 在我的build.scala 文件中,我添加了以下行:

      javaHome := Some(file("c:\\Program Files\\Java\\jdk1.6.0_35"))
      

      然后它起作用了。

      【讨论】:

        【解决方案5】:

        Java 版本为“1.7.0_51”时出现错误“(类格式不支持的版本号 [51.0])”。

        通过向 Build.scala 添加 javac 兼容性行来解决此问题:

        val settings = Defaults.defaultSettings ++ Seq (
          ...
          javacOptions ++= Seq("-encoding", "UTF-8", "-source", "1.6", "-target", "1.6")
        )
        

        【讨论】:

          猜你喜欢
          • 2018-11-22
          • 2015-03-06
          • 2017-03-26
          • 1970-01-01
          • 2011-07-05
          • 2015-03-12
          • 2014-02-01
          • 1970-01-01
          相关资源
          最近更新 更多