2009-12-30 4 views
7

J'ai eu du mal à obtenir Buildr pour compiler mon projet Scala 2.8 et j'espérais que quelqu'un l'aurait déjà compris.Compiler le code Scala 2.8.x avec Apache Buildr

Actuellement, j'ai l'application standard HelloWorld avec un buildfile comme ce qui suit:

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 

Quand je lance buildr je reçois la sortie suivante:

(dans C:/Users/Travis/eclipse_ws/HelloWorld, développement)
2.7.5
bâtiment HelloWorld
Compiling HelloWorld dans C:/Users/Travis/eclipse_ws/HelloWorld/target/classes
Buildr annulé!
← [compilateur 31mScala écrasements:
# ← [0 m

Le premier problème est le NoClassDefFoundError - il ne peut pas trouver la classe principale du compilateur scala. Le deuxième problème est que Scala.version affiche 2.7.5. Ceci est incorrect car le chemin SCALA_HOME pointe vers une version 2.8. Enfin, en utilisant l'indicateur --trace, Buildr génère une commande scalac quelque peu correcte et lorsque je l'exécute manuellement, tout compile. Je dis que c'est un peu juste parce que certaines entrées cp sont dupliquées. Voir les éléments suivants:

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:/Utilisateurs/Travis/eclipse_ws/HelloWorld/src/principal/scala -d C:/Utilisateurs/Travis/eclipse_ws/HelloWorld/cible/classes -verbose -g C:/Utilisateurs/Travis/eclipse_ws/HelloWorld/src/main/scala /hw/HelloWorld.scala

une chose que j'ai essayé (mais Errored hors constructeur) installais les éléments suivants (que je pensais était pas nécessaire w/la présence de SCALA_HOME): 01

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

Alors, des idées?

Voici une liste rapide de mes informations système: Win 7 64 bits 32 bits JDK 6 mis en place pour buildr mais JDK 6 64 bits système à l'échelle Ruby 1.8.6 32 bits Buildr 1.3.5 32 bits Scala 2.8.0.Beta1-RC6

Une autre chose que je pense à faire est de réinstaller mon JDK 32 bits et de sortir le répertoire avec le (x86) dans le nom. J'ai trouvé que les vis avec les fichiers bat de Scala, bien que je ne suis pas sûr si cela est pertinent à mes problèmes actuels.

Merci d'avance!

+0

Je ne vois pas les binaires PATH vers Scala en cours de définition. –

+0

Il est défini globalement comme une variable système qui devrait être disponible dans le script ... Je vais tester le réglage local dans le script quand je reviens à mon ordinateur à la maison. Merci pour la réponse rapide! –

+0

Même lorsque j'insère la ligne suivante dans mon fichier de construction, le problème persiste. ENV ['CHEMIN'] = ENV ['SCALA_HOME'] + '\ bin;' + ENV ['JAVA_HOME'] + '\ bin;' + ENV ['PATH'] –

Répondre

3

Compris. Problème stupide. Dans Buildr (ou peut-être plus génériquement dans Ruby?), L'appel de la méthode require doit venir en haut du fichier (ou du moins pas à l'intérieur du bloc define).

require 'buildr/scala'

donc à la fois la NoClassDefFoundError et la version incorrecte affichée par puts Scala.version ont été corrigées par cela. Ce qui suit est ce que mon script doit ressembler:

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 semble être assez doux (rapide, concise, convention sur config, etc.) une fois que vous ce que vous faites :-)

+0

Je suis content que vous ayez compris cela, merci d'avoir posté ça pour un projet de test sur OS X avec JRuby et Buildr 1.4.0 (RC) . –

1

Buildr 1.4 prend en charge Scala 2.8 et 1.4.2 utilisera 2.8 par défaut.

2

Avec la version 1.4, au moment où vous pouvez faire

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

Et il utilisera scala 2.8.