Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
sbt因stackoverflow而失败,而maven工作正常_Maven_Sbt - Fatal编程技术网

sbt因stackoverflow而失败,而maven工作正常

sbt因stackoverflow而失败,而maven工作正常,maven,sbt,Maven,Sbt,为了测试,我创建了一个只有一个文件build.sbt的空项目,其中只包含一行: libraryDependencies += "org.openprovenance.prov" % "prov-interop" % "0.7.2" 如果我运行sbt update,它将失败并导致堆栈溢出。最后几行是这样的(您可以想象重复嵌套尝试获取依赖项): 我在一个maven项目中有相同的依赖项,在那里下载依赖项没有任何问题。如何在sbt中解决这个问题?在库依赖项的最开始声明以下依赖项: "org.antlr

为了测试,我创建了一个只有一个文件
build.sbt
的空项目,其中只包含一行:

libraryDependencies += "org.openprovenance.prov" % "prov-interop" % "0.7.2"
如果我运行
sbt update
,它将失败并导致堆栈溢出。最后几行是这样的(您可以想象重复嵌套尝试获取依赖项):


我在一个maven项目中有相同的依赖项,在那里下载依赖项没有任何问题。如何在sbt中解决这个问题?

库依赖项的最开始声明以下依赖项:

"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

我在另一个jar(我自己构建并部署到私有存储库的jar)中看到了类似的异常。您能否解释一下这里的问题是什么,以及为什么添加
antlr运行时
可以解决这个问题?Thanks@tzach-zohar,问题的根源在于由
prov interop
引起的递归依赖。显然,在
maven
中使用
prov interop
是可以的,但在
sbt
中使用时,它会导致对不同版本的
antlr运行时的递归依赖。因此,最后基于依赖关系树评估,最好的解决方案是
排除(“org.antlr”,“stringtemplate”)
。谢谢,这很有帮助!
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