scala - Akka:缺少 akka.version

标签 scala akka

我有一个 scala 项目,我在 IntelliJ 中运行良好,运行/调试配置设置为应用程序,现在我想创建一个 jar 来使用“java -jar .jar”运行它。这是一个 Maven 项目,而不是 SBT。

我有三个模块,包含所有其他模块的顶层模块在资源文件夹中有一个 reference.conf。这是一个最小的 application.conf,没有很多设置。另一个模块有自己的 reference.conf。

我基于我的顶层模块创建了一个工件,然后构建它来创建一个 jar。当我用java执行的时候

Exception in thread "main" java.lang.ExceptionInInitializerError
    at com.se.pd.Main.main(Main.scala)
Caused by: com.typesafe.config.ConfigException$Missing: No configuration setting found for key 'akka.version'
    at com.typesafe.config.impl.SimpleConfig.findKey(SimpleConfig.java:124)
    at com.typesafe.config.impl.SimpleConfig.find(SimpleConfig.java:145)
    at com.typesafe.config.impl.SimpleConfig.find(SimpleConfig.java:151)
    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.<init>(ActorSystem.scala:168)
    at akka.actor.ActorSystemImpl.<init>(ActorSystem.scala:504)
    at akka.actor.ActorSystem$.apply(ActorSystem.scala:141)
    at akka.actor.ActorSystem$.apply(ActorSystem.scala:118)
    at com.se.pd.ServiceMain$class.$init$(ServiceMain.scala:25)
    at com.se.pd.Main$.<init>(Main.scala:17)
    at com.se.pd.Main$.<clinit>(Main.scala)

当我解压缩文件时,我在根目录中看到合并的 reference.conf。

我错过了什么?创建 ActorSystem 时是否需要做一些特定的事情?我尝试删除我所有的配置文件并使用所有默认设置运行,但它仍然不起作用,尽管在那种情况下错误从提示“akka.version”变成了提示“akka”。所以感觉好像我只是没有加载 akka 默认值?

最佳答案

我出于我的目的修复了它,但它并没有真正向我说明问题是什么。 我的修复(特定于 IntelliJ IDEA)是将工件从:

"extract to target JAR"

"copy to output directory and link via manifest"

我想当我创建一个大 fat jar 子时会丢失一些东西。

--

我只是想添加一个更好的解决方案来使用 maven 创建一个“fat jar”。但是我不能相信,因为看起来 Zoltan 下面链接的 Akka 页面现在建议了相同的解决方案,老实说,我不记得我是在哪里找到它的。我可能在过去的某个时候遇到过更新的页面。请查阅该链接以获得更好的信息。

所以:

使用maven shader插件创建fat jar 然后确保合并配置文件:

<transformer
implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
          <resource>reference.conf</resource>
     </transformer>
     <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
      <mainClass>myMainClass</mainClass>
</transformer>

使用该配置,我可以成功构建 fat jars。

关于scala - Akka:缺少 akka.version,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27915512/

相关文章:

scala - 是否有一个函数可以分别采用两个变换函数来变换/映射 Either 的 Left 和 Right 情况?

scala - 喷雾 json 错误 : could not find implicit value for parameter um

java - Play Framework/Akka调度器延迟漂移

scala - 找不到参数的隐式值

scala - Twitter 数据来自 Spark

java - AKKA 在一段时间后停止记录堆栈跟踪

java - 将 Play 2 框架与 Akka 远程系统连接起来

scala - 无法找到参数 FromRequestUnmarshaller Akka 的隐式值

c# - 这段 Scala 代码在惯用的 C# 中看起来如何?

scala - 如何在 Scala 中进行泛型元组 -> 案例类转换?