Pregunta

He estado luchando para conseguir Buildr para compilar mi proyecto Scala 2.8 y yo estaba esperando que alguien podría haber dado cuenta de esto ya.

Actualmente tengo la aplicación HelloWorld de serie con un BuildFile como la siguiente:

ENV['JAVA_HOME'] = 'C:\Program Files (x86)\Java\jdk1.6.0_17'
ENV['SCALA_HOME'] = 'C:\scala-2.8.0.Beta1-RC6'

define "HelloWorld" do

  #artifact_ns['Buildr::Compiler::Scalac'].library = '2.8.0'
  require 'buildr/scala'

  puts Scala.version

end

Cuando corro Buildr me sale el siguiente resultado:

  

(en C: / Users / Travis / eclipse_ws / HelloWorld, desarrollo)
      2.7.5
      Edificio HelloWorld
      Compilar HelloWorld en C: / Usuarios / Travis / eclipse_ws / HelloWorld / target / clases
      Buildr abortado!
      ← [31mScala compilador estrelló:
      # ← [0m

El primer problema es la NoClassDefFoundError - que no puede encontrar la clase principal del compilador de Scala. El segundo problema es que Scala.version está imprimiendo 2.7.5. Esto es incorrecto porque el camino SCALA_HOME está apuntando a un lanzamiento 2.8.

Por último, el uso de los programas bandera --trace mí que Buildr está generando una orden un tanto scalac correcta y cuando corro ese comando manualmente todo se compila. Yo digo que es algo correcto sólo porque algunas entradas cp se duplican. Consulte la siguiente:

  

scalac -classpath C: /scala-2.8.0.Beta1-RC6/lib/scala-library.jar; C: /scala-2.8.0.Beta1-RC6/lib/scala-compiler.jar; C: /scala-2.8.0.Beta1-RC6/lib/scala-library.jar;C:/scala-2.8.0.Beta1-RC6/lib/scala-compiler.jar -sourcepath C: / Users / Travis / eclipse_ws / HelloWorld / src / main / Scala -d C: / Usuarios / Travis / eclipse_ws / HelloWorld / target / clases -Verbose C -g: /Users/Travis/eclipse_ws/HelloWorld/src/main/scala/hw/HelloWorld.scala

Una cosa más que intentó (pero con error a cabo constructor) se ponía lo siguiente (lo cual pensé que no era necesario w / presencia de SCALA_HOME):

#artifact_ns['Buildr::Compiler::Scalac'].library = '2.8.0'

Así que cualquier idea?

Aquí está una lista rápida de la información de mi sistema: Win 7 64 bits JDK 6 conjunto 32 bit localmente para Buildr pero JDK 6 64 bits de todo el sistema Ruby 1.8.6 de 32 bits Buildr 1.3.5 de 32 bits Scala 2.8.0.Beta1-RC6

Una cosa más estoy pensando en hacer es volver a instalar mi 32 bits JDK y conseguir que fuera el directorio con el (x86) en el nombre. He encontrado que los tornillos con los archivos de murciélago Scala aunque no estoy seguro si esto es relevante para mis problemas actuales.

Gracias de antemano!

¿Fue útil?

Solución

descubierto. problema tonta. En Buildr (o tal vez más genéricamente en Ruby?), La llamada al método requieren debe venir en la parte superior del archivo (o al menos no en el interior del bloque de definir).

require 'Buildr / Scala'

Así que tanto el NoClassDefFoundError y la versión incorrecta muestran por pone Scala.version fueron corregidos por esto. Lo siguiente es lo que mi script debe haber parecido:

require 'buildr/scala'

ENV['JAVA_HOME'] = 'C:\Program Files (x86)\Java\jdk1.6.0_17'
ENV['SCALA_HOME'] = 'C:\scala-2.8.0.Beta1-RC6'

define 'HelloWorld' do

  puts Scala.version

end

Por cierto: Buildr parece ser bastante dulce (rápida, concisa, la convención sobre configuración, etc.) una vez que averiguar lo que está haciendo: -)

Otros consejos

Con la versión 1.4, en el momento en que puede hacer

Buildr.settings.build['scala.version'] = "2.8.0"
require 'buildr/scala'

Y va a utilizar Scala 2.8.

Buildr 1.4 tiene soporte para Scala 2.8 y 1.4.2 utilizará 2,8 por defecto.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top