Playframework中的Akka版本



我正在尝试将一些现有的代码与游戏框架集成。我下载了1.3.6最小类型安全激活器包。我创建了一个play-java项目并修改了build.sbt文件,包含以下行:

resolvers += "Local Maven Repository" at "file://"+Path.userHome.absolutePath+"/.m2/repository"
libraryDependencies ++= Seq(
  "com.xxx" % "messages" % "0.0.1-SNAPSHOT"
)

然后我在Application.java中添加了一个对我现有类的引用。当我运行activator run时,它下载了大量的jar,包括我手动添加并成功编译代码的jar。

当它试图运行时,我得到一个错误:

$ ./activator run
[info] Loading project definition from <APP_ROOT>/project
[info] Set current project to my-proj (in build file:<APP_ROOT>)
--- (Running the application, auto-reloading is enabled) ---
java.lang.ClassNotFoundException: akka.event.slf4j.Slf4jLoggingFilter
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:348)
    at akka.actor.ReflectiveDynamicAccess$$anonfun$getClassFor$1.apply(DynamicAccess.scala:67)
    at akka.actor.ReflectiveDynamicAccess$$anonfun$getClassFor$1.apply(DynamicAccess.scala:66)
    at scala.util.Try$.apply(Try.scala:192)
    at akka.actor.ReflectiveDynamicAccess.getClassFor(DynamicAccess.scala:66)
    at akka.actor.ReflectiveDynamicAccess.createInstanceFor(DynamicAccess.scala:84)
    at akka.actor.ActorSystemImpl.<init>(ActorSystem.scala:612)
    at akka.actor.ActorSystem$.apply(ActorSystem.scala:143)
    at akka.actor.ActorSystem$.apply(ActorSystem.scala:127)
    at play.api.libs.concurrent.ActorSystemProvider$.start(Akka.scala:291)
    at play.core.server.DevServerStart$$anonfun$mainDev$1.apply(DevServerStart.scala:205)
    at play.core.server.DevServerStart$$anonfun$mainDev$1.apply(DevServerStart.scala:61)
    at play.utils.Threads$.withContextClassLoader(Threads.scala:21)
    at play.core.server.DevServerStart$.mainDev(DevServerStart.scala:60)
    at play.core.server.DevServerStart$.mainDevHttpMode(DevServerStart.scala:50)
    at play.core.server.DevServerStart.mainDevHttpMode(DevServerStart.scala)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
    at play.runsupport.Reloader$.startDevMode(Reloader.scala:223)
    at play.sbt.run.PlayRun$$anonfun$playRunTask$1$$anonfun$apply$2$$anonfun$apply$3.devModeServer$lzycompute$1(PlayRun.scala:74)
    at play.sbt.run.PlayRun$$anonfun$playRunTask$1$$anonfun$apply$2$$anonfun$apply$3.play$sbt$run$PlayRun$$anonfun$$anonfun$$anonfun$$devModeServer$1(PlayRun.scala:74)
    at play.sbt.run.PlayRun$$anonfun$playRunTask$1$$anonfun$apply$2$$anonfun$apply$3.apply(PlayRun.scala:100)
    at play.sbt.run.PlayRun$$anonfun$playRunTask$1$$anonfun$apply$2$$anonfun$apply$3.apply(PlayRun.scala:53)
    at scala.Function1$$anonfun$compose$1.apply(Function1.scala:47)
查看版本号,我认为这是因为我们使用的是akka-actor 2.4.0-RC2,而activator使用的是2.3。是否有办法让激活器使用2.4?还是我需要等待激活器的新版本?

我试着添加

  "com.typesafe.akka" % "akka-actor_2.11" % "2.4.0-RC2"

libraryDependencies,但是给出了一个关于被驱逐的依赖和相同的类未找到错误的警告。

我不太熟悉playactivator之间的相互作用。如果有一种方法可以在不增加大量额外工作的情况下摆脱其中一个,那也很好。

我认为这不是版本的问题。这看起来像是Slf4j的问题。

尝试将akka-slf4j in添加到built.sbt:

 libraryDependencies += "com.typesafe.akka" %% "akka-slf4j" % "2.3.6"

对于akka actor 2.4.0,您需要添加2.4.0版本的slf4j:
 libraryDependencies += "com.typesafe.akka" %% "akka-slf4j" % "2.4.0"

最新更新