如何解决类型安全配置上的 NoSuchMethodError?
how to resolve NoSuchMethodError on typesafe config?
我在尝试 运行 我的项目时遇到此错误。
Exception in thread "main" java.lang.NoSuchMethodError:
com.typesafe.config.Config.getDuration(Ljava/lang/String;)Ljava/time/Duration;
试图清除 ivy2 缓存但没有成功。
这就是我构建的 sbt 的样子:
scalaVersion := "2.11.7"
scalacOptions := Seq("-unchecked", "-feature", "-deprecation", "-encoding", "utf8")
resolvers ++= Seq(
Resolver.sonatypeRepo("releases"),
Resolver.sonatypeRepo("snapshots"),
Resolver.bintrayRepo("websudos", "oss-releases"),
"spray repo" at "http://repo.spray.io",
"Typesafe repository snapshots" at "http://repo.typesafe.com/typesafe/snapshots/",
"Typesafe repository releases" at "http://repo.typesafe.com/typesafe/releases/",
"Sonatype repo" at "https://oss.sonatype.org/content/groups/scala-tools/",
"Sonatype releases" at "https://oss.sonatype.org/content/repositories/releases",
"Sonatype snapshots" at "https://oss.sonatype.org/content/repositories/snapshots",
"Sonatype staging" at "http://oss.sonatype.org/content/repositories/staging",
"Sonatype" at "https://oss.sonatype.org/content/groups/public/",
"Java.net Maven2 Repository" at "http://download.java.net/maven/2/",
"Twitter Repository" at "http://maven.twttr.com"
)
libraryDependencies ++= {
val phantomV = "1.29.5"
val scalaTestV = "3.0.0"
val elastic4sV = "2.4.0"
val akkaStreamVersion = "2.4.2"
val akkaVersion = "2.3.11"
Seq(
"com.websudos" %% "phantom-dsl" % phantomV,
"com.websudos" %% "phantom-reactivestreams" % phantomV,
"com.websudos" %% "util-testing" % "0.13.0" % "test, provided",
"com.typesafe.akka" %% "akka-actor" % akkaVersion,
"com.typesafe.akka" %% "akka-http-spray-json-experimental" % akkaStreamVersion,
"com.typesafe.akka" %% "akka-http-core" % akkaStreamVersion,
"com.typesafe.akka" %% "akka-http-experimental" % akkaStreamVersion,
"com.typesafe.akka" %% "akka-http-testkit" % akkaStreamVersion,
"org.scalatest" %% "scalatest" % scalaTestV % "test",
"com.typesafe.akka" %% "akka-testkit" % akkaVersion % "test",
"com.typesafe.play" %% "play-streams-experimental" % "2.4.6",
"com.sksamuel.elastic4s" %% "elastic4s-core" % elastic4sV,
"com.sksamuel.elastic4s" %% "elastic4s-streams" % elastic4sV
)
}
lazy val root = project.in(file(".")).configs(IntegrationTest)
Defaults.itSettings
initialCommands := """|import akka.actor._
|import akka.pattern._
|import akka.util._
|import scala.concurrent._
|import scala.concurrent.duration._""".stripMargin
fork in run := true
知道如何解决吗?
更新:
java.class.path 显示
/Library/Java/JavaVirtualMachines/jdk1.8.0_102.jdk/Contents/Home/lib/tools.jar:/Applications/IntelliJ
IDEA.app/Contents/lib/jps-builders.jar:/Applications/IntelliJ
IDEA.app/Contents/lib/util.jar:/Applications/IntelliJ
IDEA.app/Contents/lib/trove4j.jar:/Users/avi/Library/Application
Support/IntelliJIdea2016.2/Scala/lib/scala-library.jar:/Users/avi/Library/Application
Support/IntelliJIdea2016.2/Scala/lib/scala-nailgun-runner.jar:/Users/avi/Library/Application Support/IntelliJIdea2016.2/Scala/lib/compiler-settings.jar:/Users/avi/Library/Application
Support/IntelliJIdea2016.2/Scala/lib/jps/nailgun.jar:/Users/avi/Library/Application
Support/IntelliJIdea2016.2/Scala/lib/jps/sbt-interface.jar:/Users/avi/Library/Application
Support/IntelliJIdea2016.2/Scala/lib/jps/incremental-compiler.jar:/Users/avi/Library/Application
Support/IntelliJIdea2016.2/Scala/lib/jps/scala-jps-plugin.jar:/Users/avi/Library/Application Support/IntelliJIdea2016.2/Scala/lib/jps/dotty-interfaces.jar
听起来像是类路径问题。您可能正在使用调用(使用)Typesafe Config 的库,但您路径中的 Typesafe Config 版本低于 1.3.0。 Typesafe Config 1.3.0 引入了找不到的方法。要查看您的运行时类路径,请确保这些语句是第一个执行的语句(即在您的应用程序崩溃之前):
val cp = System.getProperty("java.class.path")
val sep = System.getProperty("path.separator")
cp.split(sep).foreach(println)
一旦发现您没有 Typesafe Config 1.3.0,请将其添加为显式依赖项。
将 TypeSafe 1.3.1 添加为依赖项可能会有所帮助,将其添加为依赖项的 Seq() 的一部分:
"com.typesafe" % "config" % "1.3.1"
我在尝试 运行 我的项目时遇到此错误。
Exception in thread "main" java.lang.NoSuchMethodError: com.typesafe.config.Config.getDuration(Ljava/lang/String;)Ljava/time/Duration;
试图清除 ivy2 缓存但没有成功。 这就是我构建的 sbt 的样子:
scalaVersion := "2.11.7"
scalacOptions := Seq("-unchecked", "-feature", "-deprecation", "-encoding", "utf8")
resolvers ++= Seq(
Resolver.sonatypeRepo("releases"),
Resolver.sonatypeRepo("snapshots"),
Resolver.bintrayRepo("websudos", "oss-releases"),
"spray repo" at "http://repo.spray.io",
"Typesafe repository snapshots" at "http://repo.typesafe.com/typesafe/snapshots/",
"Typesafe repository releases" at "http://repo.typesafe.com/typesafe/releases/",
"Sonatype repo" at "https://oss.sonatype.org/content/groups/scala-tools/",
"Sonatype releases" at "https://oss.sonatype.org/content/repositories/releases",
"Sonatype snapshots" at "https://oss.sonatype.org/content/repositories/snapshots",
"Sonatype staging" at "http://oss.sonatype.org/content/repositories/staging",
"Sonatype" at "https://oss.sonatype.org/content/groups/public/",
"Java.net Maven2 Repository" at "http://download.java.net/maven/2/",
"Twitter Repository" at "http://maven.twttr.com"
)
libraryDependencies ++= {
val phantomV = "1.29.5"
val scalaTestV = "3.0.0"
val elastic4sV = "2.4.0"
val akkaStreamVersion = "2.4.2"
val akkaVersion = "2.3.11"
Seq(
"com.websudos" %% "phantom-dsl" % phantomV,
"com.websudos" %% "phantom-reactivestreams" % phantomV,
"com.websudos" %% "util-testing" % "0.13.0" % "test, provided",
"com.typesafe.akka" %% "akka-actor" % akkaVersion,
"com.typesafe.akka" %% "akka-http-spray-json-experimental" % akkaStreamVersion,
"com.typesafe.akka" %% "akka-http-core" % akkaStreamVersion,
"com.typesafe.akka" %% "akka-http-experimental" % akkaStreamVersion,
"com.typesafe.akka" %% "akka-http-testkit" % akkaStreamVersion,
"org.scalatest" %% "scalatest" % scalaTestV % "test",
"com.typesafe.akka" %% "akka-testkit" % akkaVersion % "test",
"com.typesafe.play" %% "play-streams-experimental" % "2.4.6",
"com.sksamuel.elastic4s" %% "elastic4s-core" % elastic4sV,
"com.sksamuel.elastic4s" %% "elastic4s-streams" % elastic4sV
)
}
lazy val root = project.in(file(".")).configs(IntegrationTest)
Defaults.itSettings
initialCommands := """|import akka.actor._
|import akka.pattern._
|import akka.util._
|import scala.concurrent._
|import scala.concurrent.duration._""".stripMargin
fork in run := true
知道如何解决吗?
更新: java.class.path 显示
/Library/Java/JavaVirtualMachines/jdk1.8.0_102.jdk/Contents/Home/lib/tools.jar:/Applications/IntelliJ IDEA.app/Contents/lib/jps-builders.jar:/Applications/IntelliJ IDEA.app/Contents/lib/util.jar:/Applications/IntelliJ IDEA.app/Contents/lib/trove4j.jar:/Users/avi/Library/Application Support/IntelliJIdea2016.2/Scala/lib/scala-library.jar:/Users/avi/Library/Application Support/IntelliJIdea2016.2/Scala/lib/scala-nailgun-runner.jar:/Users/avi/Library/Application Support/IntelliJIdea2016.2/Scala/lib/compiler-settings.jar:/Users/avi/Library/Application Support/IntelliJIdea2016.2/Scala/lib/jps/nailgun.jar:/Users/avi/Library/Application Support/IntelliJIdea2016.2/Scala/lib/jps/sbt-interface.jar:/Users/avi/Library/Application Support/IntelliJIdea2016.2/Scala/lib/jps/incremental-compiler.jar:/Users/avi/Library/Application Support/IntelliJIdea2016.2/Scala/lib/jps/scala-jps-plugin.jar:/Users/avi/Library/Application Support/IntelliJIdea2016.2/Scala/lib/jps/dotty-interfaces.jar
听起来像是类路径问题。您可能正在使用调用(使用)Typesafe Config 的库,但您路径中的 Typesafe Config 版本低于 1.3.0。 Typesafe Config 1.3.0 引入了找不到的方法。要查看您的运行时类路径,请确保这些语句是第一个执行的语句(即在您的应用程序崩溃之前):
val cp = System.getProperty("java.class.path")
val sep = System.getProperty("path.separator")
cp.split(sep).foreach(println)
一旦发现您没有 Typesafe Config 1.3.0,请将其添加为显式依赖项。
将 TypeSafe 1.3.1 添加为依赖项可能会有所帮助,将其添加为依赖项的 Seq() 的一部分:
"com.typesafe" % "config" % "1.3.1"