Sto cercando di integrare del codice esistente con lo play framework. Ho scaricato il 1.3.6 minimal Typesafe Activator package. Ho creato un progetto play-java
e modificato il file build.sbt
con queste righe:Versione di Akka in Playframework
resolvers += "Local Maven Repository" at "file://"+Path.userHome.absolutePath+"/.m2/repository"
libraryDependencies ++= Seq(
"com.xxx" % "messages" % "0.0.1-SNAPSHOT"
)
Ho poi aggiunto un riferimento a una delle mie classi esistenti in Application.java
. Quando ho eseguito activator run
, ha scaricato un numero elevato di jar, compreso quello che avevo aggiunto manualmente e compilato correttamente il codice.
Quando si tenta di eseguire, ottengo un errore:
$ ./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)
Guardando i numeri di versione, credo che questo è dovuto al fatto che stiamo usando Akka-attore-2.4.0 RC2, mentre attivatore sta usando 2.3. C'è un modo per far sì che l'attivatore usi il 2.4? O devo aspettare una nuova versione di attivatore?
Ho provato ad aggiungere
"com.typesafe.akka" % "akka-actor_2.11" % "2.4.0-RC2"
al libraryDependencies
, ma che ha dato un avvertimento circa una dipendenza sfrattato e la stessa classe non trovato errore.
Non ho molta familiarità con l'interazione tra play
e activator
. Se c'è un modo per fare questo lavoro eliminando uno di essi senza aggiungere un sacco di lavoro aggiuntivo, va bene anche questo.
Questa linea non ha aiutato. Anche senza di esso, lo vedo nell'output: '[info] Risoluzione di com.typesafe.akka # akka-slf4j_2.11; 2.3.13 ... ', che indica che akka-slf4j è già stato caricato (e versione successiva anche). Questa riga: 'libraryDependencies + =" com.typesafe.akka "%%" akka-slf4j "%" 2.4.0 "', ha funzionato. Aveva anche un avvertimento sullo sfratto del 2.3.13 akka-slf4j. –
Grazie per il commento - Ho aggiornato la risposta per qualcuno che guarderà dopo –
Infatti la versione akka-slf4j deve corrispondere ... Mi chiedo perché questo non fa parte di ciò che viene implementato con il modello di attivatore .. .. – matanster