Scala SBT: версия компилятора Scala - PullRequest
12 голосов
/ 25 февраля 2011

Я знаю, что библиотеки Scala Swing присутствуют в Scala 2.8:

[info] Building project chart 1.0 against Scala 2.8.1
[info]    using sbt.DefaultProject with sbt 0.7.4 and Scala 2.7.7

Так почему же я получаю эту ошибку:

[error] /src/main/scala/Chart.scala:2: value swing is not a member of package scala
[error] import scala.swing.Panel

Это потому, что SBT используетнеправильная версия scala (т.е. 2.7.7)?Если да, то как мне настроить его на использование правильной версии?

РЕДАКТИРОВАТЬ: Ответить

После Дилана Лейси я сделал следующееfile sbt/project/build/chart.scala:

import sbt._

class SamplesProject(info: ProjectInfo) extends DefaultProject(info)
{
   val scalaSwing = "org.scala-lang" % "scala-swing" % "2.8.1"
}

Затем я запустил: sbt reload update из оболочки.

Теперь все скомпилировано!

Ответы [ 2 ]

15 голосов
/ 27 августа 2011

Для sbt 0.11 (и предположительно 0.10) добавление следующего к build.sbt сделает это:

libraryDependencies <+= scalaVersion { "org.scala-lang" % "scala-swing" % _ }
9 голосов
/ 25 февраля 2011

Нет. Информация о версии, указанная в строке 2 - это просто версия, с которой была собрана sbt, она не повлияет на вашу сборку.

Поскольку Swing - это пакет (не входит в базовые классы), я подозреваю, что проблема заключается в одной из двух вещей. Или:

  1. В вашем файле сборки не указано, что вы хотите использовать scala-swing, и он запутался. Вы можете исправить это, добавив:

    val scalaSwing = "org.scala-lang" % "scala-swing" % "packageVersion"

    в вашем /project/build/projectName.scala (Спасибо, Янкс!)

  2. Вы добавили зависимость, но еще не загрузили необходимый пакет. Для этого вам потребуется sbt, чтобы перезагрузить определение вашего проекта и затем получить все необходимые пакеты:

    sbt reload update

Если вам нужен вариант 1, вам, вероятно, также потребуется вариант 2.

Если ни одна из этих работ, возможно, вы ужасно запутали местное хранилище. Это можно исправить с помощью sbt clear-lib, но затем вы снова загрузите все свои пакеты.

...