web-dev-qa-db-ja.com

キーakkaの構成設定が見つかりません

私は自分のプロジェクトの1つにscala、spray、およびakkaを使用しています。 Intellijでは、問題なく動作しています。プロジェクトをビルドしてコマンドラインで実行しようとすると、次のエラーが発生します。


Caused by: com.typesafe.config.ConfigException$Missing: No configuration setting
 found for key 'akka'
        at com.typesafe.config.impl.SimpleConfig.findKey(SimpleConfig.Java:124)
        at com.typesafe.config.impl.SimpleConfig.find(SimpleConfig.Java:147)
        at com.typesafe.config.impl.SimpleConfig.find(SimpleConfig.Java:159)
        at com.typesafe.config.impl.SimpleConfig.find(SimpleConfig.Java:164)
        at com.typesafe.config.impl.SimpleConfig.getString(SimpleConfig.Java:206)
        at akka.actor.ActorSystem$Settings.(ActorSystem.scala:168)
        at akka.actor.ActorSystemImpl.(ActorSystem.scala:504)
        at akka.actor.ActorSystem$.apply(ActorSystem.scala:141)
        at akka.actor.ActorSystem$.apply(ActorSystem.scala:108)
        at akka.actor.ActorSystem$.apply(ActorSystem.scala:99)

問題を解決するのを手伝ってください

23
Rahul Dev

問題は、sbt:Assemblyを使用すると、デフォルトのマージ戦略で、すべてのreference.confファイルが除外されるためです。

複数のファイルが同じ相対パスを共有している場合(たとえば、複数の依存関係JAR内のapplication.confという名前のリソース)、デフォルトの戦略は、すべての候補が同じ内容であり、そうでない場合はエラーになることを確認することです。

解決策は、次のようにMergeStrategyを追加することです

assemblyMergeStrategy in Assembly := {
  case PathList("reference.conf") => MergeStrategy.concat
}
56
BenjaminParker

Akkaはデフォルトで次の場所から設定ファイルを読み込みます:

  1. クラスパスのルートの下のapplication.conf(jarを含む)
  2. actorSystem( "name"、config)から手動で構成に渡されます。
  3. クラスパスのルートの下のreference.conf(jarを含む)

クラスパスを再確認し、クラスパス参照が間違っていないかどうか確認してください。これは、akka jar、スプレーjarなどのクラスパスのルートが間違っていることを示しています。

4
LynxZh