2015-12-21 56 views
1

爲了測試起見,我創建了一個空的項目只有一個文件build.sbt只包含一個行:SBT失敗,計算器,而行家工作正常

libraryDependencies += "org.openprovenance.prov" % "prov-interop" % "0.7.2" 

如果我運行sbt update失敗堆棧溢出。最後幾行看起來像這樣(你能想象的重複嵌套試圖下載依賴):

at org.apache.ivy.core.resolve.ResolveEngine.fetchDependencies(ResolveEngine.java:731) 
    at org.apache.ivy.core.resolve.ResolveEngine.fetchDependencies(ResolveEngine.java:748) 
    at org.apache.ivy.core.resolve.ResolveEngine.doFetchDependencies(ResolveEngine.java:799) 
    at org.apache.ivy.core.resolve.ResolveEngine.fetchDependencies(ResolveEngine.java:731) 
    at org.apache.ivy.core.resolve.ResolveEngine.fetchDependencies(ResolveEngine.java:748) 
    at org.apache.ivy.core.resolve.ResolveEngine.doFetchDependencies(ResolveEngine.java:799) 
[error] (*:update) java.lang.StackOverflowError 
[error] Total time: 1 s, completed Dec 21, 2015 11:50:37 PM 

我有一個Maven項目相同的依賴,並在那裏的依賴關係沒有任何問題下載。我該如何解決這個問題?

回答

2

聲明你libraryDependencies的一開始就以下依賴性:

"org.antlr" % "antlr-runtime" % "3.4" 

更新:更好的使用ANTLR運行時

更新2:給定的解決方案沒有解決問題完全地,這個問題是由在prov-interop依賴關係樹中聲明的遞歸依賴引起的。要解決這樣的聲明:

libraryDependencies ++= Seq (
    "org.openprovenance.prov" % "prov-model" % "0.7.2", 
    "org.openprovenance.prov" % "prov-interop" % "0.7.2" exclude("org.antlr", "stringtemplate"), // to resolve cyclic dependencies 
+0

我看到一個不同的jar的異常(我自己構建並部署到私有存儲庫)。你能解釋一下這裏的問題,以及爲什麼增加'antlr-runtime'解決它?謝謝 –

+1

@ tzach-zohar,問題的根源在於'prov-interop'引起的遞歸依賴。顯然,在'maven'中使用'prov-interop'很好,但是在'sbt'中使用時,會導致與'antlr-runtime'不同版本的遞歸依賴關係。所以最後根據依賴樹評估,最好的解決方案是'exclude(「org.antlr」,「stringtemplate」)'。 – Shayanlinux

+0

謝謝,這很有幫助! –

相關問題