2011-10-09 35 views
6

Estoy siguiendo el video en esta página http://zegoggl.es/2009/12/building-android-apps-in-scala-with-sbt.html que utiliza SBT para crear un proyecto de Android. Sin embargo llego al punto de tratar de instalar el emulador usandoError al ejecutar sbt install-emulator

sbt install-emulator 

Y me sale el siguiente error:

[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 [[email protected]] (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) 
+0

has hecho para resolver el problema? Estoy enfrentando el mismo problema y me gustaría saber cómo lo hiciste. – Salil

Respuesta

4

Tuve el mismo problema. Me di cuenta de que era porque estaba usando JDK 1.7. Aunque las jarras creadas con 1.6 funcionan en 1.7, proguard para 1.6 jarras no funciona con 1.7 jarras. Actualmente, solo las versiones beta de Proguard están disponibles para 1.7. Por lo tanto, las herramientas de Android y los repositorios maven tienen protección para 1.6 jarras. Cuando intenta recortar 1.7 jarras, arroja ese error.

Para resolver este problema, bajé de categoría a JDK 1.6, desinstalé 1.7 y me aseguré de que mis jarras fueran creadas por las herramientas 1.6 JDK.

Para eliminar 1.7 jarros del repositorio local, eliminé los directorios en ~/.ivy2 y recreé el proyecto de Android utilizando el complemento. Y simplemente seguí el archivo README para el complemento de Android al tee.

+0

compatible con lo anterior: https: //github.com/jberkel/android-plugin/issues/102 – RAbraham

+0

noticias sobre el soporte de Java 1.7? –

2

A medida que la página que se vincula a dice, "Nota: este artículo hasn' ha sido actualizado por un tiempo y está desactualizado. En caso de duda, consulte el archivo README del sbt-android-plugin ". El archivo léame allí (README.md) contiene el único conjunto de instrucciones que he podido encontrar que realmente funciona con las versiones actuales de scala, sbt y Android SDK.

que tenía que hacer sólo ajustes menores para conseguir que funcione:

  1. Modificar la secuencia de comandos SBT (probablemente ~/bin/SBT) y añadir un "-XX: MaxPermSize = 512m" parámetro, de lo contrario quedarse sin espacio PermGen
  2. Asegúrese de utilizar la plantilla 0.10 (la predeterminada) en lugar de la 0.11 que puede especificar opcionalmente.
  3. Asegúrese de saltar a la sección "Hackear en el complemento" cuando se lo indique.

Espero que esto ayude.

0

Para mí, la descripción en el sitio de complementos fue suficiente: link.

¿Has intentado hacerlo de esa manera?

0

Porque aparentemente el jdk1.7 no es compatible, tuve el mismo problema. En mi archivo build.scala, he añadido la línea siguiente:

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

y luego funcionó.

0

He obtenido el error "(número de versión no compatible [51.0] para el formato de clase)" con la versión de Java "1.7.0_51".

Esto ha solucionado el problema mediante la adición de la línea de compatibilidad javac para Build.scala:

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