找不到密钥 akka 的配置设置

Posted

技术标签:

【中文标题】找不到密钥 akka 的配置设置【英文标题】:no configuration setting found for key akka 【发布时间】:2015-04-06 13:11:48 【问题描述】:

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

请帮我解决问题

【问题讨论】:

你需要在你的conf文件中为akka提供配置……就这么简单。 我理解...我使用的是默认配置。在 ide 它工作正常.. 那么可能和你在命令行运行的方式有关。你是如何运行它的? 这是因为当我们将项目构建为单个 jar 时,reference.conf 文件将被覆盖。我们必须将所有 jars reference.conf 复制到单个 reference.conf。它会正常工作...:-) 【参考方案1】:

问题是在使用 sbt:assembly 时,默认的合并策略会排除所有的 reference.conf 文件

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

解决方法是添加一个MergeStrategy如下

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

【讨论】:

在执行jetty:start 然后exit 之后,我在 sbt 控制台中收到错误。【参考方案2】:

Akka 默认会从以下位置读取配置文件:

    classpath 根目录下的application.conf(包括在jar 中) 从 ActorSystem("name", config) 手动传入配置。 classpath 根目录下的reference.conf(包括在jar 中)

请仔细检查您的类路径,看看您是否有一个错误的类路径引用,这表明 akka 罐子、喷雾罐等的类路径根不正确。

【讨论】:

【参考方案3】:

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

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

【讨论】:

以上是关于找不到密钥 akka 的配置设置的主要内容,如果未能解决你的问题,请参考以下文章

akka-http:找不到参数解组的隐式值

akka-http 错误:找不到参数 um 的隐式值:akka.http.scaladsl.unmarshalling.FromRequestUnmarshaller

在密钥链中找不到与此配置文件匹配的有效签名身份

Kerberos - 找不到适当类型的密钥来解密 AP REP - RC4 与 HMAC

我找不到 Android 密钥工具

JSONDecoder 找不到存在的密钥