【发布时间】:2021-03-31 00:13:13
【问题描述】:
在 Scala 2.13.4/SBT 1.2.8 项目中,MyService.scala 类具有此导入:
import play.api.libs.concurrent.AkkaGuiceSupport
我认为包含此类的库是由sbt 添加的,作为我在build.sbt 中添加为libraryDependencies 的库之一的依赖项。
但是当我编译项目时,我得到:
$ sbt -java-home /usr/lib/jvm/java-8 -jvm-debug 9999 run
...
[info] Compiling 31 Scala sources and 1 Java source to /home/me/projects/my_project/target/scala-2.13/classes ...
[error] /home/me/projects/my_project/app/actors/MyService.scala:8:8: object AkkaGuiceSupport is not a member of package play.api.libs.concurrent
[error] import play.api.libs.concurrent.AkkaGuiceSupport
[error] ^
在 IntelliJ 中,在项目的外部库中,我可以看到:
我错过了什么?
此编译错误的原因可能是什么?
.................................................. .........
更新:
build.sbt
name := "CH07"
version := "1.0"
lazy val `ch07` = (project in file(".")).enablePlugins(PlayScala)
scalaVersion := "2.13.4"
resolvers += "Spy Repository" at "http://files.couchbase.com/maven2"
libraryDependencies ++= Seq(
jdbc,
cacheApi,
ws,
"com.github.mumoshu" %% "play2-memcached-play28" % "0.11.0",
"org.hsqldb" % "hsqldb" % "2.5.0",
"org.jooq" % "jooq" % "3.14.4",
"org.jooq" % "jooq-codegen-maven" % "3.14.4",
"org.jooq" % "jooq-meta" % "3.14.4",
"joda-time" % "joda-time" % "2.7",
"com.ning" % "async-http-client" % "1.9.29",
"com.github.scullxbones" %% "akka-persistence-mongo-common" % "3.0.5",
"com.typesafe.akka" %% "akka-persistence" % "2.6.10",
"com.typesafe.akka" %% "akka-persistence-query" % "2.6.10",
"com.typesafe.akka" %% "akka-persistence-typed" % "2.6.10"
)
routesGenerator := InjectedRoutesGenerator
project/plugins.sbt
addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.8.7")
project/build.properties
sbt.version=1.3.10
【问题讨论】:
-
很久没用play框架了。但我猜你错过了
anorm和ehcache库,为什么你使用ch07而不是lazy val root = (project in file(".")).enablePlugins(PlayScala),因为这里提到-> playframework.com/documentation/2.8.x/BuildOverview -
@Felipe 不管使用什么库。如果你看到一个类在类路径上,是什么导致编译器看不到它?
-
我同意你的看法。但也许有一些我们不知道的依赖关系,因为 Play 在下面使用 akka 并且版本可能会有所不同。我只是认为这值得测试....
-
@Felipe 我应该提一下,在 Intellij 中,Play 插件(在 project/plugins.sbt 中)以及在 build.sbt 中添加的 akka-persistence 和 play-memcached 依赖项 - 被标记为“未知的工件。未解决或编入索引。”但是,项目中导入的大多数 akka 和 play 类都由编译器解析(在命令行中由 sbt 和 intellij 解析)。很奇怪。
-
Rapt,我的回答对你有帮助吗?
标签: scala compiler-errors playframework sbt akka