2015-10-20 29 views
5

我正在尝试将一些现有的代码与play framework集成。我下载了1.3.6 minimal Typesafe Activator package。我创建了一个play-java项目并修改了 build.sbt文件与这些线路:Playframework中的Akka版本

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) 

看着版本号,我想这是因为我们使用的是阿卡 - 演员2.4.0-RC2,同时激活使用2.3。有没有办法让激活者使用2.4?或者我需要等待新版本的激活器?

我尝试添加

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

libraryDependencies,但其产生的关于驱逐的依赖,而不是发现错误同一类的警告。

我不太熟悉playactivator之间的相互作用。如果有一种方法可以通过摆脱其中一项而不增加大量额外工作来完成这项工作,那也没有问题。

回答

7

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

尝试在添加阿卡-SLF4J到built.sbt

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

更新

对于阿卡演员2.4.0你需要添加2.4.0版本SLF4J的:

libraryDependencies += "com.typesafe.akka" %% "akka-slf4j" % "2.4.0" 
+0

该行没有帮助。即使没有它,我在输出中看到:[info]正在解析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的警告。 –

+0

感谢您的评论 - 我确实更新了以后会看到的人的答案 –

+0

事实上,akka-slf4j版本需要匹配......我想知道为什么这不是使用激活模板部署的部分。 .. – matanster

相关问题