sbt 无法编译 Scala 项目,因为 java.lang.NoSuchMethodError

car*_*car 3 scala intellij-idea sbt coursier

我是 Scala 的新手,所以任何帮助都将不胜感激。

我使用的是 IntelliJ IDEA 版本:2020.1,sbt.version=1.2.8,jdk1.8.0_251 和 Scala 2.12.8。

当我尝试编译 coursera 项目时,出现以下错误

 compile
[error] stack trace is suppressed; run 'last coursierResolutions' for the full output
[error] (coursierResolutions) java.lang.NoSuchMethodError: lmcoursier.definitions.ToCoursier$.project(Llmcoursier/definitions/Project;)Lcoursier/core/Project;
[error] Total time: 0 s, completed 23-Apr-2020 23:46:04
[IJ]sbt:bigdata-wikipedia> last coursierResolutions
[error] java.lang.NoSuchMethodError: lmcoursier.definitions.ToCoursier$.project(Llmcoursier/definitions/Project;)Lcoursier/core/Project;
[error]         at coursier.sbtcoursier.ResolutionTasks$.$anonfun$resolutionsTask$3(ResolutionTasks.scala:43)
[error]         at scala.Function1.$anonfun$compose$1(Function1.scala:49)



[error]         at sbt.internal.util.$tilde$greater.$anonfun$$u2219$1(TypeFunctions.scala:62)
[error]         at sbt.std.Transform$$anon$4.work(Transform.scala:67)
[error]         at sbt.Execute.$anonfun$submit$2(Execute.scala:281)
[error]         at sbt.internal.util.ErrorHandling$.wideConvert(ErrorHandling.scala:19)
[error]         at sbt.Execute.work(Execute.scala:290)
[error]         at sbt.Execute.$anonfun$submit$1(Execute.scala:281)
[error]         at sbt.ConcurrentRestrictions$$anon$4.$anonfun$submitValid$1(ConcurrentRestrictions.scala:178)
[error]         at sbt.CompletionService$$anon$2.call(CompletionService.scala:37)
[error]         at java.util.concurrent.FutureTask.run(FutureTask.java:266)
[error]         at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
[error]         at java.util.concurrent.FutureTask.run(FutureTask.java:266)
[error]         at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
[error]         at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
[error]         at java.lang.Thread.run(Thread.java:748)
Run Code Online (Sandbox Code Playgroud)

这是 plugins.sbt 中的 sbt coursier 插件

addSbtPlugin("io.get-coursier" % "sbt-coursier" % "2.0.0-RC3-5")
addSbtPlugin("ch.epfl.scala" % "sbt-scalafix" % "0.9.7")
Run Code Online (Sandbox Code Playgroud)

Jan*_*cki 7

删除 cousier 插件并升级到 sbt 1.3.13 对我有用。

构建属性

sbt.version=1.3.13
Run Code Online (Sandbox Code Playgroud)

插件.sbt

//addSbtPlugin("io.get-coursier" % "sbt-coursier" % "2.0.0-RC3-5")
addSbtPlugin("ch.epfl.scala" % "sbt-scalafix" % "0.9.7")
Run Code Online (Sandbox Code Playgroud)

生成.sbt

course := "bigdata"
assignment := "wikipedia"
Run Code Online (Sandbox Code Playgroud)

生成.sbt

scalaVersion := "2.12.11"
scalacOptions ++= Seq("-language:implicitConversions", "-deprecation")
libraryDependencies ++= Seq(
  "com.novocode" % "junit-interface" % "0.11" % Test,
  ("org.apache.spark" %% "spark-core" % "2.4.3"),
  ("org.apache.spark" %% "spark-sql" % "2.4.3")
)
dependencyOverrides ++= Seq(
  ("com.fasterxml.jackson.core" % "jackson-databind" % "2.6.7")
)

testOptions in Test += Tests.Argument(TestFrameworks.JUnit, "-a", "-v", "-s")
Run Code Online (Sandbox Code Playgroud)

这个答案归功于@JOHN。

  • 还在这里回答:https://www.coursera.org/learn/scala-spark-big-data/programming/QcWcs/wikipedia/discussions/threads/1-OwOZADQASjsDmQA5AE-w (2认同)

BMW*_*CMW 1

我直接在终端中使用 1.2.8 版本的 sbt 二进制文件,它救了我(IDEA 中 sbt shell 的 sbt 版本是 1.3.8)。