Скомпилируйте Scala 2.8.x код с Apache Buildr

Я изо всех сил пытался заставить Buildr компилировать мой проект Scala 2.8, и я надеялся, что кто-то уже, возможно, понял это.

В настоящее время у меня есть стандартное приложение HelloWorld с файлом типа "build" как следующее:

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

Когда я выполняю buildr, я получаю следующий вывод:

(в C:/Users/Travis/eclipse_ws/HelloWorld, разработке)
2.7.5
Создание HelloWorld
Компиляция HelloWorld в C:/Users/Travis/eclipse_ws/HelloWorld/target/classes
Buildr прерывается!
← [31mScala разрушенный компилятор:
# ← [0m

Первой проблемой является NoClassDefFoundError - это не может найти основной класс scala компилятора. Вторая проблема состоит в том, что Scala.version распечатывает 2.7.5. Это неправильно, потому что путь SCALA_HOME указывает на 2,8 выпуска.

Наконец, с помощью - флаг трассировки показывает мне, что Buildr генерирует несколько корректную команду scalac и когда я выполняю ту команду вручную, все компилирует. Я говорю, что это несколько корректно только потому, что дублированы некоторые записи CP. Посмотрите следующее:

scalac - путь к классу 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:/Users/Travis/eclipse_w s/HelloWorld/target/classes - подробный-g C:/Users/Travis/eclipse_ws/HelloWorld/src/main/scala/hw/HelloWorld.scala

Еще одна вещь, которую я попробовал (но с ошибками разработчик) устанавливал следующее (который я думал, не требовался w/присутствие SCALA_HOME):

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

Так какие-либо идеи?

Вот быстрый список моей информации о системе: Выиграйте 7 наборов битов JDK 6 32 на 64 бита локально для buildr, но JDK 6 Ruby в масштабе всей системы на 64 бита 1.8.6 Buildr на 32 бита 1.3.5 32 бита Scala 2.8.0. Beta1-RC6

Еще одна вещь я думаю о выполнении, переустанавливает мой JDK на 32 бита и выводит его каталог с (x86) на имя. Я нашел, что винты с bat-файлами Scala, хотя я не уверен, относится ли это к моим текущим проблемам.

Заранее спасибо!

7
задан Travis Schneeberger 30 December 2009 в 02:59
поделиться

2 ответа

понял. Глупая проблема. В Buildr(или, может быть, более обобщенно в Ruby?) вызов метода require должен быть в верхней части файла (или, по крайней мере, не внутри блока определения).

require 'buildr/scala'

Так что и NoClassDefFoundError, и некорректная версия, отображаемая путями Scala.version, были исправлены именно этим. Вот как должен был выглядеть мой скрипт:

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 кажется довольно милым (быстрым, лаконичным, конвенцией поверх конфигов и т.д.), как только вы поняли, что вы делаете :-)

.
3
ответ дан 7 December 2019 в 10:03
поделиться

Buildr 1.4 имеет поддержку Scala 2.8 и 1.4.2 будет использовать 2.8 по умолчанию.

1
ответ дан 7 December 2019 в 10:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: