0
我試圖從嵌入了幾個akka進程的命令行運行一個可運行jar。 雖然我不是應用程序的原始作者,但我知道代碼在日食中運行得非常愉快。 但是,當我嘗試導出然後作爲可運行Jar運行時,它會在一段時間後崩潰,並且這會在啓動akka進程時啓動。 我使用Java 8基於Akka的Runnable Jar
運行它java -jar something.jar {options}
錯誤:
at akka.actor.ActorInitializationException$.apply(Actor.scala:174)
at akka.actor.ActorCell.create(ActorCell.scala:607)
at akka.actor.ActorCell.invokeAll$1(ActorCell.scala:461)
at akka.actor.ActorCell.systemInvoke(ActorCell.scala:483)
at akka.dispatch.Mailbox.processAllSystemMessages(Mailbox.scala:282)
at akka.dispatch.Mailbox.run(Mailbox.scala:223)
at akka.dispatch.Mailbox.exec(Mailbox.scala:234)
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)
Caused by: akka.ConfigurationException: ActorSystem [akka://ClusterSystem] needs to have a 'ClusterActorRefProvider' enabled in the configuration, currently uses [akka.actor.LocalActorRefProvider]
at akka.cluster.Cluster.<init>(Cluster.scala:71)
at akka.cluster.Cluster$.createExtension(Cluster.scala:34)
at akka.cluster.Cluster$.createExtension(Cluster.scala:29)
at akka.actor.ActorSystemImpl.registerExtension(ActorSystem.scala:737)
at akka.actor.ExtensionId$class.apply(Extension.scala:79)
at akka.cluster.Cluster$.apply(Cluster.scala:29)
at akka.actor.ExtensionId$class.get(Extension.scala:91)
at akka.cluster.Cluster$.get(Cluster.scala:30)
at akka.cluster.Cluster.get(Cluster.scala)
at com.dynniq.its.csm.core.akka.Actor.preStart(Actor.java:93)
at akka.actor.Actor$class.aroundPreStart(Actor.scala:489)
at akka.actor.UntypedActor.aroundPreStart(UntypedActor.scala:95)
at akka.actor.ActorCell.create(ActorCell.scala:590)
@Override
public void preStart() {
**cluster = Cluster.get(getContext().system());**
cluster.subscribe(getSelf(), MemberUp.class);
preStartExtra();
}
,但就像我說的,似乎在Eclipse環境中工作。 我做錯了什麼?
在此先感謝。
事實上,問題是在哪裏'akka.actor正確地傳遞.provider'在eclipse中運行時設置,爲什麼從jar中運行時不能正確執行。我可以想象的另一件事是,當你在'reference.conf'而不是'application.conf'中設置這個值時:因爲'reference.conf'是從classpath中讀取的,所以它們的順序可能沒有定義,所以你不應在'reference.conf'中有重疊設置,而應將主應用程序配置放在'application.conf'中。 –