Playframework java.lang.ClassNotFoundException:play.core.server.DevServerStart

Playframework java.lang.ClassNotFoundException:play.core.server.DevServerStart,playframework,sbt,Playframework,Sbt,我正在尝试创建一个包含两个子项目(都是播放应用程序)的项目,这两个子项目都依赖于一个公共库,但我在运行任何一个播放应用程序时遇到了问题 这是我的build.sbt: lazy val playDeps = Seq( ws, filters, evolutions, guice, "org.scalatestplus.play" %% "scalatestplus-play" % "3.1.1" % Test ) lazy val slickDeps = Seq(

我正在尝试创建一个包含两个子项目(都是播放应用程序)的项目,这两个子项目都依赖于一个公共库,但我在运行任何一个播放应用程序时遇到了问题

这是我的build.sbt:

lazy val playDeps = Seq(
  ws,
  filters,
  evolutions,
  guice,
  "org.scalatestplus.play"  %%  "scalatestplus-play"  % "3.1.1" % Test
)

lazy val slickDeps = Seq(
  "com.typesafe.play" %%  "play-slick"            % "3.0.1",
  "com.typesafe.play" %%  "play-slick-evolutions" % "3.0.1",
  "org.postgresql"    %   "postgresql"            % "42.1.4"
)

lazy val commonDeps = Seq(
  "org.scalatest" %%  "scalatest" % "3.0.4" % Test
)

lazy val commonSettings = Seq(
  organization := "my-org",
  scalaVersion := "2.12.4",
  javaOptions += "-Dconfig.file=conf/application.dev.conf"
)

lazy val root = (project in file("."))
  .enablePlugins(PlayScala)
  .aggregate(server, client)
  .dependsOn(server, client)

lazy val common = (project in file("common"))
  .settings(
    name := "my-common",
    version := "1.0.0",

    libraryDependencies := commonDeps ++ Seq("com.typesafe.play" %% "play-json" % "2.6.7")
  )

lazy val server = (project in file("server"))
  .enablePlugins(PlayScala)
  .dependsOn(common)
  .settings(
    commonSettings,

    name := "my-server",
    version := "1.0.0",

    libraryDependencies := commonDeps ++ playDeps ++ slickDeps
  )

lazy val client = (project in file("client"))
  .enablePlugins(PlayScala)
  .dependsOn(common)
  .settings(
    commonSettings,

    name := "my-client",
    version := "1.1.13",

    libraryDependencies := Seq("org.typelevel" %% "cats" % "0.9.0") ++ commonDeps ++ playDeps ++ slickDeps
  )
通过切换到服务器项目
projectserver
并运行
run
运行应用程序时,我收到以下错误消息:

[error] java.lang.ClassNotFoundException: play.core.server.DevServerStart
[error]         at java.base/java.net.URLClassLoader.findClass(Unknown Source)
[error]         at java.base/java.lang.ClassLoader.loadClass(Unknown Source)
[error]         at java.base/java.lang.ClassLoader.loadClass(Unknown Source)
[error]         at play.runsupport.Reloader$.startDevMode(Reloader.scala:227)
[error]         at play.sbt.run.PlayRun$.devModeServer$lzycompute$1(PlayRun.scala:95)
[error]         at play.sbt.run.PlayRun$.devModeServer$1(PlayRun.scala:79)
[error]         at play.sbt.run.PlayRun$.$anonfun$playRunTask$3(PlayRun.scala:102)
[error]         at play.sbt.run.PlayRun$.$anonfun$playRunTask$3$adapted(PlayRun.scala:65)
[error]         at scala.Function1.$anonfun$compose$1(Function1.scala:44)
[error]         at sbt.internal.util.$tilde$greater.$anonfun$$u2219$1(TypeFunctions.scala:39)
[error]         at sbt.std.Transform$$anon$4.work(System.scala:66)
[error]         at sbt.Execute.$anonfun$submit$2(Execute.scala:262)
[error]         at sbt.internal.util.ErrorHandling$.wideConvert(ErrorHandling.scala:16)
[error]         at sbt.Execute.work(Execute.scala:271)
[error]         at sbt.Execute.$anonfun$submit$1(Execute.scala:262)
[error]         at sbt.ConcurrentRestrictions$$anon$4.$anonfun$submitValid$1(ConcurrentRestrictions.scala:174)
[error]         at sbt.CompletionService$$anon$2.call(CompletionService.scala:36)
[error]         at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
[error]         at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
[error]         at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
[error]         at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
[error]         at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
[error]         at java.base/java.lang.Thread.run(Unknown Source)
[accuheat-server] $ [error] (Compile / run) java.lang.ClassNotFoundException: play.core.server.DevServerStart
看起来PlayScala插件没有被使用,这是我第一次尝试在同一个项目中组合两个play应用程序,因此非常感谢您的帮助


谢谢

这是因为这样的台词:

libraryDependencies := commonDeps ...

在libraryDependencies上使用
:=
会导致错误。我不知道为什么,但是把它改成
++=
行得通

这是因为这样的线条:

libraryDependencies := commonDeps ...

在libraryDependencies上使用
:=
会导致错误。我不知道为什么,但是把它改成
++=
行得通

您是否确保没有相互冲突的依赖项
ClassNotFound
表明可能存在一些二进制不兼容。感谢@JakubKozłowski,原来这与在
库依赖项上使用
:=
有关。您是否确保没有冲突的依赖项
ClassNotFound
表明可能存在一些二进制不兼容。感谢@JakubKozłowski,原来这与在
libraryDependencies
上使用
:=
有关。我认为使用
:=
可以覆盖原本由Play插件添加的依赖项,因此缺少类/不兼容为什么这个问题/答案没有更多的投票权?我认为通过使用
:=
您已经覆盖了原本会由Play插件添加的依赖项,因此缺少类/不兼容为什么这个问题/答案没有更多的投票权?