我有一个scala项目,我在IntelliJ中运行良好,运行/调试配置设置为Application,现在我想创建一个jar来使用'java -jar .jar'来运行它。这是一个maven项目,而不是SBT。
我有三个模块,包含所有其他模块的顶层模块在resources文件夹中有一个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默认值?
答案 0 :(得分:3)
我为了我的目的修好了它,但它并没有真正向我澄清问题所在。 我的修复(特定于IntelliJ IDEA)是从以下项目更改工件:
&#34;提取到目标JAR&#34;
到
&#34;复制到输出目录并通过清单&#34;
进行链接
我想当我制作一个大胖罐时会丢失一些东西。
-
我只想添加一个更好的解决方案来创建一个&#34;胖罐&#34;与maven。但我无法获得信用,因为看起来Zoltan下面链接的Akka页面现在提出了相同的解决方案,并且说实话,我不记得我在哪里找到了这个。我可能在过去的某个时候遇到过更新的页面。请查阅该链接以获得更好的信息。
所以:
使用maven着色器插件创建胖罐 然后确保合并配置文件:
<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>
使用该配置,我可以成功构建胖罐。