2017-05-29 7 views
0

nettyを使用してClusterActorRefProviderを使用して簡単なakkaクラスタを作成しています。アイデアからコードを実行すると、すべてうまく動作しています。しかし、アプリケーションをjarファイルとして実行すると、突然すべてが失敗します。 「キー 'akka.remote.artery'の設定が見つかりません」というエラーが表示されます。私はsbtアセンブリを使用してjarファイルを作成しています。キー 'akka.remote.artery'の設定が見つかりません

私はここで何が欠けていますか?任意の助けてください....

+0

詳細が必要な場合は教えてください... – ArunavaS

+0

jarファイルにapplication.confファイルが存在しないようです。あなたは瓶の内容をリストできますか?そのために 'jar tf your.jar'を使うことができます。 –

+0

あなたはakka-remote(動脈付き)=> http://doc.akka.io/docs/akka/current/scala/remoting-artery.htmlを使用しているようです。 – mfirry

答えて

2

は、すべての依存関係を持つはるかにJARを使用して、一緒にマージされたとしてアッカアプリケーションをパッケージ化するとき、私は同様の問題に遭遇したbuild.sbt

assemblyMergeStrategy in assembly := { 
    case PathList("META-INF", xs @ _*) => MergeStrategy.discard 
    case "reference.conf" => MergeStrategy.concat 
    case x => MergeStrategy.first 
} 
0

内の行の下に使用して解決しましたSBTの代わりにMavenアセンブリプラグイン。

太っているJARをパッケージ化すると、同じパスにあるファイル(たとえば/reference.conf)がデフォルトでビルドシステムによって上書きされるため、根底にある問題があります。したがって、複数のAkkaモジュールを使用すると、1つのreference.confが他のすべてのものを上書きしてしまいます。したがって、reference.confではなく、reference.confの1つの部分がJARファイル内にあります。 。

これは、一部のモジュール(上書きされたreference.confにある)のデフォルトの設定が欠落しているため、設定が見つかりませんでした。

@ArunavaS答えは、reference.confファイルをマージするため、SBTで動作します。 Mavenを使用している場合は、同様の操作を行うように設定することができます(例:How can I merge resource files in a Maven assembly?を参照)。

また、太いJARを使用する代わりに、すべての依存関係を別のフォルダにエクスポートしてから、JARファイルの実行時にクラスパスに追加することができます。

関連する問題