Ошибка при запуске sbt install-emulator - PullRequest
6 голосов
/ 10 октября 2011

Я слежу за видео на этой странице 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 ]

4 голосов
/ 12 ноября 2011

У меня была такая же проблема. Я понял, что это потому, что я использовал JDK 1.7. Хотя банки, созданные с 1.6, работают на 1.7, proguard для 1.6 банок не работает с 1.7 банками. В настоящее время доступны только бета-версии Proguard для 1.7. Итак, инструменты Android и репозитории Maven имеют Proguard для 1,6 банок. Когда он пытается обрезать 1,7 банки, он выдает эту ошибку.

Чтобы решить эту проблему, я понизил JDK до 1.6, удалил 1.7 и убедился, что мои банки созданы с помощью инструментов 1.6 JDK.

Чтобы удалить 1,7 банок из локального репозитория, я просто удалил каталоги в ~ / .ivy2 и заново создал проект Android с помощью плагина. И я только что последовал за README для плагина Android к тройнику.

2 голосов
/ 10 октября 2011

На странице, на которую вы ссылаетесь, написано: «Примечание: эта статья давно не обновлялась и устарела. В случае сомнений обратитесь к README из плагина sbt-android-plugin». В этом файле readme ( README.md ) содержится единственный набор инструкций, который мне удалось найти, который действительно работает с текущими версиями scala, sbt и Android SDK.

Мне пришлось сделать только незначительные изменения, чтобы заставить его работать:

  1. Измените свой сценарий sbt (возможно, ~ / bin / sbt) и добавьте параметр "-XX: MaxPermSize = 512m", в противном случае у вас закончится пространство PermGen
  2. Обязательно используйте шаблон 0.10 (по умолчанию) вместо 0.11, который вы можете указать по желанию.
  3. Убедитесь, что вы переходите к разделу «Взлом на плагин», когда он говорит вам.

Надеюсь, это поможет.

0 голосов
/ 09 марта 2014

Я получил ошибку "(неподдерживаемый номер версии [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")
)
0 голосов
/ 23 апреля 2013

Поскольку, очевидно, jdk1.7 не совместим, у меня была такая же проблема.В моем файле build.scala я добавил следующую строку:

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

, и тогда это сработало.

0 голосов
/ 10 октября 2011

Для меня было достаточно описания на сайте плагинов: ссылка .

Вы пытались сделать это таким образом?

...