找不到关键akka的配置设置

时间:2015-02-06 11:40:55

标签: scala akka spray

我在我的一个项目中使用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)

请帮我解决问题

3 个答案:

答案 0 :(得分:45)

问题是当使用sbt:assembly时,默认合并策略会根据

排除所有reference.conf文件

如果多个文件共享相同的相对路径(例如,多个依赖项JAR中名为application.conf的资源),则默认策略是验证所有候选项具有相同的内容,否则会出错。

解决方案是按如下方式添加MergeStrategy

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

答案 1 :(得分:4)

默认情况下,Akka将从以下位置读取配置文件:

  1. classpath根目录下的application.conf(包括在jar中)
  2. 从ActorSystem手动传入配置("名称",配置)。
  3. classpath根目录下的reference.conf(包括在jar中)
  4. 请仔细检查您的类路径,看看您是否有一个错误的类路径引用,指示akka jar,spray jar等类路径的错误根目录。

答案 2 :(得分:1)

针对maven用户的maven-shade-plugin配置:

<configuration>
    <transformers>
        <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
            <resource>reference.conf</resource>
        </transformer>
    </transformers>
</configuration>