use*_*977 12 akka playframework playframework-2.2 akka-persistence
有没有办法结合akka 2.3和2.2?现在我在运行这样的应用程序时遇到了AbstractMethodError.我需要在一个应用程序中同时使用它们,因为Akka 2.3带有非常有用的akka持久性模块,它非常可靠(与它的前身相反),这种可靠性在我的情况下非常重要.我已经尝试从源代码编译游戏2.2.2并将akka依赖项更改为2.3但我仍然得到相同的错误:
[ERROR] [04/01/2014 09:42:26.105] [play-akka.actor.default-dispatcher-6] [ActorSystem(play)] Uncaught error from thread [play-akka.actor.default-dispatcher-6] shutting down JVM since 'akka.jvm-exit-on-fatal-error' is enabled
java.lang.AbstractMethodError
at akka.actor.ActorCell.receiveMessage(ActorCell.scala:516)
at akka.actor.ActorCell.invoke(ActorCell.scala:487)
at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:238)
at akka.dispatch.Mailbox.run(Mailbox.scala:220)
at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
Run Code Online (Sandbox Code Playgroud)
Akka 2.3和Play 2.2只是二进制不兼容,这意味着你可以编译Play 2.2与Akka 2.3作为依赖,并将其发布到您当地的常春藤或公司存储库.
在我的情况下,修补的Play版本没有发生AbstractMethodError.尝试以这种方式修补:
framework
文件夹(这是带有project
子目录的sbt项目)sbt publishLocal
或者sbt publish
,对于后者则需要调整出版{常春藤,Maven的}库和publishMavenStyle := true
在framework/project/Build.scala
publishLocal
),否则您需要将解析器添加到build.sbt
和project/plugins.sbt
project/plugins.sbt
设置修补的Play sbt插件,例如,addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.2.2-akka-2.3.1")
演示位于https://github.com/schleichardt/event-sourcing-with-the-play-framework/tree/bf171720c43a1349555726cb11cffae4d967cc4b.修补的Play版本的源代码位于https://github.com/schleichardt/Play20/tree/2.2.2-akka-2.3.1.
有关Akka 2.3编译Play的问题,请参阅/sf/answers/1585588301/,Jeff May无法使用WS库.
请记住,其他库(例如带有Play迭代的ReactiveMongo)也可能依赖于Play库,并且可能会将未修补的版本加载到类路径中.在那种情况下"group" %% "library" % "version" exclude("com.typesafe.play", "play")
会有所帮助.如果是ReactiveMongo,你也需要为Akka 2.3编译它.
有了sbt 'show libraryDependencies'
你可以检查实际的依赖关系和它们的版本.
不幸的是,您将不得不等待Play团队发布与Akka 2.3兼容的版本,或者在他们的邮件列表中询问有关如何正确构建Play分发的说明(因为您似乎实际上并未使用重建版本) JAR文件).
归档时间: |
|
查看次数: |
4167 次 |
最近记录: |