2015-10-20 10 views
5

Ich versuche, einige vorhandenen Code mit der play framework zu integrieren. Ich habe die 1.3.6 minimal Typesafe Activator package heruntergeladen. Ich habe ein Projekt play-java und modifiziert, um die build.sbt Datei mit diesen Zeilen:Akka-Version in Playframework

resolvers += "Local Maven Repository" at "file://"+Path.userHome.absolutePath+"/.m2/repository" 

libraryDependencies ++= Seq(
    "com.xxx" % "messages" % "0.0.1-SNAPSHOT" 
) 

ich dann einen Verweis auf eine meiner bestehenden Klassen in Application.java hinzugefügt. Als ich activator run lief, lud es eine große Anzahl von Gläsern herunter, einschließlich die, die ich manuell hinzugefügt und den Code erfolgreich kompiliert hatte.

Wenn es zu laufen versucht, erhalte ich eine Fehlermeldung:

$ ./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) 

bei Versionsnummern der Suche, ich denke, das liegt daran, dass wir akka-Schauspieler 2.4.0-RC2 verwenden, während Aktivator 2.3 verwendet. Gibt es eine Möglichkeit, Aktivator die 2.4 zu verwenden? Oder muss ich auf eine neue Version des Aktivators warten?

versuchte ich

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

zu libraryDependencies Zugabe, aber das gab eine Warnung über eine vertriebene Abhängigkeit und dieselbe Klasse nicht Fehler gefunden.

Ich bin nicht sehr vertraut mit der Interaktion zwischen play und activator. Wenn es einen Weg gibt, dies zu schaffen, indem man eines von ihnen loswird, ohne viel zusätzliche Arbeit hinzuzufügen, ist das auch in Ordnung.

Antwort

7

Ich glaube nicht, dass es das Problem mit der Version ist. Es sieht aus wie das Problem mit dem Slf4j.

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

aktualisieren

Für die akka Schauspieler 2.4.0 Sie 2.4.0-Version von slf4j hinzufügen müssen:

Try Akka-slf4j in die built.sbt hinzuzufügen

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

Diese Zeile hat nicht geholfen. Auch ohne es sehe ich das in der Ausgabe: '[info] Auflösen von com.typesafe.akka # akka-slf4j_2.11; 2.3.13 ... ', was anzeigt, dass akka-slf4j bereits geladen wird (und a spätere Version sogar). Diese Zeile: 'libraryDependencies + =" com.typesafe.akka "%%" akka-slf4j "%" 2.4.0 "', hat es funktioniert. Es warnte auch davor, das 2.3.13 akka-slf4j zu vertreiben. –

+0

Vielen Dank für den Kommentar - Ich habe aktualisiert, um die Antwort für die Person, die später aussehen wird –

+0

In der Tat muss die akka-slf4j-Version übereinstimmen ... Ich frage mich, warum dies nicht Teil von was ist mit der Aktivator-Vorlage bereitgestellt .. .. – matanster