【问题标题】:Akka version in PlayframeworkPlayframework 中的 Akka 版本
【发布时间】:2015-10-20 23:28:38
【问题描述】:

我正在尝试将一些现有代码与play framework 集成。我下载了1.3.6 minimal Typesafe Activator package。我创建了一个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,包括我手动添加并成功编译代码的那个。

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

$ ./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,但它给出了一个关于被驱逐的依赖和相同类未找到错误的警告。

我对@9​​87654331@ 和activator 之间的交互并不太熟悉。如果有一种方法可以在不增加大量额外工作的情况下摆脱其中一个来完成这项工作,那也很好。

【问题讨论】:

    标签: java playframework-2.0 akka typesafe-activator


    【解决方案1】:

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

    尝试将akka-slf4j添加到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"
    

    【讨论】:

    • 那行没有帮助。即使没有它,我也会在输出中看到:[info] Resolving com.typesafe.akka#akka-slf4j_2.11;2.3.13 ... ,这表明 akka-slf4j 已经被加载(甚至更高版本)。这一行:libraryDependencies += "com.typesafe.akka" %% "akka-slf4j" % "2.4.0",确实使它工作。它还有一个关于驱逐 2.3.13 akka-slf4j 的警告。
    • 感谢您的评论 - 我确实为稍后会看的人更新了答案
    • 确实 akka-slf4j 版本需要匹配...我想知道为什么这不是激活器模板部署的一部分...
    猜你喜欢
    • 2018-02-06
    • 2012-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多