J'essaye d'exécuter un pot runnable à partir d'une ligne de commande qui a intégré plusieurs processus akka. Bien que je ne sois pas l'auteur original de l'application, je sais que le code fonctionne assez bien dans une éclipse. Cependant, lorsque j'essaie d'exporter puis de l'exécuter en tant que Jar exécutable, il tombe après un certain temps et c'est quand il commence à initier les processus akka. Je cours à l'aide de Java 8Basé sur Akka Runnable Jar
java -jar something.jar {options}
erreur:
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();
}
mais comme je le dis semble fonctionner dans l'environnement Eclipse. qu'est-ce que je fais mal?
Merci d'avance.
En effet, la question est là 'akka.actor .provider' est défini lors de l'exécution d'eclipse, et pourquoi n'est-il pas répercuté correctement lors de l'exécution à partir d'un pot. Une autre chose que je peux imaginer est quand vous définissez cette valeur dans 'reference.conf' au lieu de' application.conf': parce que 'reference.conf' est lu dans le classpath, leur ordre peut ne pas être défini, donc vous ne devrait pas avoir de paramètres qui se chevauchent dans 'reference.conf' et placer plutôt la configuration de votre application principale dans' application.conf'. –