2015-12-26 90 views
19

我是Scala的新用戶,遵循創建scala sbt項目的方式。Scala sbt:sbt中的多個依賴關係

https://www.youtube.com/watch?v=Ok7gYD1VbNw


加入

libraryDependencies += "org.scalatest" % "scalatest_2.11" % "2.2.4" % "test" 

build.sbt後,並刷新該項目,我得到了這條消息。

[警告]具有相同組織/名稱但具有不同版本的多個依賴項。爲了避免衝突,選擇一個版本:

[提醒] * org.scala浪:斯卡拉-反映:(2.11.2,2.11.7)

[提醒] * org.scala-lang.modules :斯卡拉-xml_2.11:(1.0.2,1.0.4)

而且在build.sbt,THW字 'scalatest' 是紅色的,這意味着它是一個未解決的依賴關係。

我應該改變項目設置中的東西,比如scala sdk嗎?

祝你好運!

+0

只要它警告它應該不成問題。檢查是否有錯誤。如果有的話 - 在這裏打印。 – Rumoku

+0

如果你使用IntellJ Idea,在'build.sbt'中任何東西都可以是紅色的,但它仍然會編譯。 IDE的解析器有時無法解析東西(scala代碼),所以通常只要編譯就可以忽略紅色的東西。其他IDE可能也是如此。 – Archeg

+0

@Archeg如果我的配置是正確的,我可以運行測試文件,對吧?目前,我甚至無法在IDE中「運行」,同時右鍵單擊該文件。 –

回答

23

你可以把添加這些依賴關係:

libraryDependencies ++= Seq(
    "org.scala-lang" % "scala-reflect" % "2.11.7", 
    "org.scala-lang.modules" % "scala-xml_2.11" % "1.0.4" 
) 

它迫使編譯器選擇庫的具體版本。它爲我解決了問題。

+2

我想知道爲什麼Idea無法通過'build.sbt'中的'scalaVersion:=「2.11.7」'來理解它本身 –

+0

大部分時間都是這樣,但是我遇到1.0.4和1.0版本的問題.5' org.scala-lang.modules:scala-xml'。我已經盡力將它們從常春藤緩存中清除,但沒有獲得積極的結果。 – ZbyszekKr

+0

謝謝你,那對我有用 – vasigorc

6

我能夠通過從scalatest依賴關係中排除這些來解決這個問題。

libraryDependencies ++= Seq(
    "org.scalatest" % "scalatest_2.11" % "2.2.4" % "test" 
    exclude("org.scala-lang", "scala-reflect") 
    exclude("org.scala-lang.modules", "scala-xml_2.11") 
) 
+1

我更喜歡這個,這是BartłomiejSzałach的回答。 – ivanorone