Ошибка компиляции Spec ScalaTest

Я новичок в Scala, и я пытаюсь использовать ScalaTest. Я включил его зависимость в мой файл build.sbt как libraryDependencies++=Seq( "org.scalatest" % "scalatest_2.11" % "2.1.7" % "test" )

и обновленный sbt, и теперь он появляется в моей папке "Внешние библиотеки", поэтому я думаю, что он был установлен правильно. Теперь я хочу создать тестовый класс. Поэтому я создал один под src/test/ scala. Я использовал пример с первой страницы сайта ScalaTest, который

import collection.mutable.Stack
import org.scalatest._

class ExampleSpec extends FlatSpec with Matchers {

  "A Stack" should "pop values in last-in-first-out order" in {
    val stack = new Stack[Int]
    stack.push(1)
    stack.push(2)
    stack.pop() should be (2)
    stack.pop() should be (1)
  }

  it should "throw NoSuchElementException if an empty stack is popped" in {
    val emptyStack = new Stack[Int]
    a [NoSuchElementException] should be thrownBy {
      emptyStack.pop()
    }
  }
}

Однако, когда я запускаю этот класс, я получаю ошибку

 Error:scalac: bad symbolic reference. A signature in package.class refers to type compileTimeOnly
in package scala.annotation which is not available.
It may be completely missing from the current classpath, or the version on
the classpath might be incompatible with the version used when compiling package.class.

а также

 Error:(4, 27) Reference to class FlatSpec in package scalatest should not have survived past type checking,
it should have been processed and eliminated during expansion of an enclosing macro.
class ExampleSpec extends FlatSpec with Matchers {
                      ^

Может ли кто-нибудь сказать мне, в чем проблема. Похоже, что он не признает ScalaTest. Однако в моих Внешних библиотеках и Auto-complete IntelliJ также показано, что он есть. Как-то мне нужно обновить что-то еще, прежде чем я смогу начать использовать ScalaTest?

EDIT:

Также, когда я запускаю test:compile из sbt, я получаю

  [error] error while loading package, class file needed by package is missing.
[error] reference value <init>$default$2 of object deprecated refers to nonexisting symbol.
[error] error while loading Matchers, class file needed by Matchers is missing.
[error] reference value <init>$default$2 of object deprecated refers to nonexisting symbol.
[error] error while loading Assertions, class file needed by Assertions is missing.
[error] reference value internal of package scala.reflect.macros refers to nonexisting symbol.
[error] error while loading AbstractSuite, class file needed by AbstractSuite is missing.
[error] reference value <init>$default$2 of object deprecated refers to nonexisting symbol.
[error] error while loading Tolerance, class file needed by Tolerance is missing.
[error] reference value <init>$default$2 of object deprecated refers to nonexisting symbol.
[error] error while loading BeWord, class file needed by BeWord is missing.
[error] reference value <init>$default$2 of object deprecated refers to nonexisting symbol.
[error] error while loading ResultOfNotWordForAny, class file needed by ResultOfNotWordForAny is missing.
[error] reference value <init>$default$2 of object deprecated refers to nonexisting symbol.
[error] error while loading NotWord, class file needed by NotWord is missing.
[error] reference value <init>$default$2 of object deprecated refers to nonexisting symbol.
[error] 8 errors found
[error] (test:compile) Compilation failed

Ответ 1

Кажется, SBT пытается скомпилировать против scala 2.9.2. Я думаю, вы должны добавить один из

scalaVersion := "2.10.4"

или

scalaVersion := "2.11.1"

на build.sbt

и, конечно,

libraryDependencies += "org.scalatest" %% "scalatest" % "2.1.7" % "test"

Кроме того, вы можете попробовать последнюю программу запуска SBT.

Ответ 2

И если вам нужно скомпилировать с scala 2.9, а затем обновить JAVA_HOME и IDEA_JDK, чтобы указать на jdk1.7 вместо jdk1.8