2009-12-30 6 views
7

Ho lottato per arrivare Buildr per compilare il mio progetto Scala 2.8 e speravo che qualcuno potrebbe aver già capito questo.Compilare Scala codice 2.8.x con Apache Buildr

Attualmente ho l'applicazione HelloWorld standard con un BuildFile come la seguente:

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 

Quando eseguo Buildr ottengo il seguente output:

(in C:/Users/Travis/eclipse_ws/HelloWorld, sviluppo)
2.7.5
costruzione HelloWorld
Compilazione HelloWorld in C:/Users/Travis/eclipse_ws/helloworld/target/classi
Buildr abortito!
← [31mScala compilatore si è schiantato:
# ← [0m

Il primo problema è la NoClassDefFoundError - non può trovare la classe principale del compilatore Scala. Il secondo problema è che Scala.version sta stampando 2.7.5. Questo non è corretto perché il percorso SCALA_HOME punta a una versione 2.8.

Infine, utilizzando il flag --trace mi dimostra che Buildr sta generando un comando alquanto corretta scalac e quando si esegue il comando manualmente tutto viene compilato. Dico che è alquanto corretto solo perché alcune voci cp sono duplicate. Vedere il seguente:

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:/Utenti/Travis/eclipse_ws/HelloWorld/src/main/scala -d C:/Users/Travis/eclipse_ws/HelloWorld/target/classes -verbose -g C:/Users/Travis/eclipse_ws/HelloWorld/src/main/scala /hw/HelloWorld.scala

Un'altra cosa che ho provato (ma con errori fuori costruttore) tramontava il seguente (che ho pensato che non era richiesto w/la presenza di SCALA_HOME):

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

Così tutte le idee?

ecco un breve elenco di mia informazioni di sistema: Win 7 64 bit JDK 6 a 32 bit impostato a livello locale per Buildr ma JDK 6 a 64 bit Rubino 1.8.6 livello di sistema a 32 bit Buildr 1.3.5 a 32 bit Scala 2.8.0.Beta1-RC6

Un'altra cosa che sto pensando di fare è reinstallare il mio JDK a 32 bit e farlo uscire dalla directory con (x86) nel nome. Ho trovato che le viti con i file di bat Scala, anche se non sono sicuro se questo è rilevante per i miei problemi attuali.

Grazie in anticipo!

+0

Non vedo il PERCORSO sui binari di Scala (gli script, in realtà) sono impostati. –

+0

È impostato globalmente come variabile di sistema che dovrebbe essere disponibile all'interno dello script ... Verificherò l'impostazione localmente nello script quando torno al mio computer di casa. Grazie per la risposta rapida! –

+0

Anche quando inserisco la seguente riga nel mio file di build, il problema esiste ancora. ENV ['PATH'] = ENV ['SCALA_HOME'] + '\ bin;' + ENV ['JAVA_HOME'] + '\ bin;' + ENV ['PATH'] –

risposta

3

Capito. Problema sciocco In Buildr (o forse più genericamente in Ruby?), La chiamata al metodo require deve arrivare all'inizio del file (o almeno non all'interno del blocco define).

richiedono 'Buildr/Scala'

Così sia il NoClassDefFoundError e la versione non corretta visualizzata da puts Scala.version sono stati corretti da questo. Di seguito è quello che il mio script dovrebbe assomigliare:

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 

BTW: Buildr sembra essere piuttosto dolce (veloce, conciso, convenzione sulla configurazione, ecc) una volta a capire cosa si sta facendo :-)

+0

Sono contento che l'abbia capito. Grazie per la pubblicazione. Ho ottenuto questo lavoro per un progetto di test su OS X con JRuby e Buildr 1.4.0 (RC) . –

1

Buildr 1.4 ha il supporto per Scala 2.8 e 1.4.2 utilizzerà 2.8 di default.

2

Con la versione 1.4, in questo momento si può fare

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

e utilizzerà Scala 2.8.