运行sbt install-emulator时出错

时间:2011-10-09 22:30:23

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

我正在关注此页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)

5 个答案:

答案 0 :(得分:4)

我有同样的问题。我意识到这是因为我使用的是JDK 1.7。尽管使用1.6创建的罐子在1.7上工作,但1.6罐的proguard不适用于1.7罐子。目前,只有1.7版本的Proguard测试版可用。因此,Android工具和maven存储库有1.6罐的预测。当它试图修剪1.7罐时,会抛出该错误。

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

要从本地存储库中删除1.7个jar,我只是删除〜/ .ivy2下的目录并使用插件重新创建了android项目。我只是关注Android插件的README到发球台。

答案 1 :(得分:2)

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

我不得不做一些小调整才能让它发挥作用:

  1. 修改你的sbt脚本(可能是〜/ bin / sbt)并添加一个“-XX:MaxPermSize = 512m”参数,否则就会耗尽PermGen空间
  2. 确保使用0.10模板(默认值),而不是您可以选择指定的0.11模板。
  3. 确保在它告诉您时跳到“黑客插件”部分。
  4. 希望这有帮助。

答案 2 :(得分:0)

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

你试过这样做吗?

答案 3 :(得分:0)

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

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

然后它奏效了。

答案 4 :(得分:0)

我已经获得了错误“(类格式不支持的版本号[51.0])”与java版本“1.7.0_51”。

通过将javac兼容性行添加到Build.scala:

来解决此问题
val settings = Defaults.defaultSettings ++ Seq (
  ...
  javacOptions ++= Seq("-encoding", "UTF-8", "-source", "1.6", "-target", "1.6")
)