lein uberjar - 找不到密钥' akka.version&{39;

时间:2016-03-04 14:33:40

标签: clojure akka leiningen

我可以创建一个由许多类文件组成的uberjar,最初是Scala,Java,Clojure。我遇到的问题是,当我运行java -jar my-server.jar时,它崩溃了:

No configuration setting found for key 'akka.version'

这是预期的,并且有一个maven solution。接受的答案here上的黄色写作基本上是Akka说的#34;你不应该用Akka罐装其中的uberjars,因为那时Akka无法找到它的{{1文件。"

我正在尝试将其作为莱因解决方案:

.conf

我有一个本地maven存储库(我的意思是不是〜/ .m2,而是一个用于将非Clojars jar引入lein构建的本地存储库)。也许我需要:pom-plugins [[org.apache.maven.plugins/maven-shade-plugin 2.2]] 再次为akka罐子拿起这个新设置 - 不 - 没有帮助。

这里有一些堆栈跟踪,以明确问题的来源:

lein deploy localrepo1

编辑我现在查看了jar文件。有两个akka jar文件,其中都有Exception in thread "main" 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:169) at akka.actor.ActorSystemImpl.<init>(ActorSystem.scala:505) at akka.actor.ActorSystem$.apply(ActorSystem.scala:142) at akka.actor.ActorSystem$.apply(ActorSystem.scala:109) at com.seasoft.comms.MyPLCActorHolder.createRefToLocalActor(MyPLCActorHolder.scala:39) 。这些文件未正确合并,因为(不出所料)reference.conf无法理解其中属性键/值的嵌套。

具体而言,lein uberjar中的reference.confakka-actor_2.11-2.3.9.jar,但此条目尚未进入合并的akka.version = "2.3.9"。我修改了uberjar并修复了问题,当然这给了我下一个合并问题。所以这里的修复是自己手动进行合并。

更好的解决方法是编写一个小合并程序(有两个函数:谓词和合并)并将其转换为akka,以便编写构建工具的人可以使用它...

2 个答案:

答案 0 :(得分:0)

从两个罐子中手动合并reference.conf,然后手动更改uberjar(覆盖现有的reference.conf)就可以了。合并文件为here

我相信只要有来自不同罐子的属性文件具有相同名称,就会发生此问题。例如,log4j.properties也需要被覆盖。

答案 1 :(得分:0)

我改变了火花版本以避免这种问题。 Spark 2.1.0不依赖于Akka,也没有Akka reference.conf问题。

相关问题