com.typesafe.config.ConfigException$Missing:找不到键“play”的配置设置。

7

我在一个sbt项目中工作,正在使用play-ws库。但我的应用程序不是基于play框架的。

因此,当我运行Job时,会出现以下错误:

com.typesafe.config.ConfigException$Missing: 找不到键为'play'的配置设置 在com.typesafe.config.impl.SimpleConfig.findKey(SimpleConfig.java:124)处找不到键为'play'的配置设置,接着在com.typesafe.config.impl.SimpleConfig.find(SimpleConfig.java:145),com.typesafe.config.impl.SimpleConfig.find(SimpleConfig.java:159),com.typesafe.config.impl.SimpleConfig.find(SimpleConfig.java:164)中继续查找,最后在com.typesafe.config.impl.SimpleConfig.getObject(SimpleConfig.java:218)处获取值。 然后,在com.typesafe.config.impl.SimpleConfig.getConfig(SimpleConfig.java:224)和com.typesafe.config.impl.SimpleConfig.getConfig(SimpleConfig.java:33)处对该键进行了多次调用,接着在play.core.Invoker$$anon$1.play$core$Invoker$$anon$$loadActorConfig(Invoker.scala:35)处加载actor配置。在play.core.Invoker$$anon$1$$anonfun$3.apply(Invoker.scala:23)和play.core.Invoker$$anon$1$$anonfun$3.apply(Invoker.scala:21)中继续执行代码,在scala.Option.getOrElse(Option.scala:120)处出现错误。在play.core.Invoker$$anon$1.create(Invoker.scala:21)处创建对象,然后在play.core.ClosableLazy.get(ClosableLazy.scala:51)处关闭对象。在play.core.Invoker$.system(Invoker.scala:40)处对系统进行操作,然后在play.core.Invoker$.executionContext(Invoker.scala:41)处获取执行上下文。在play.api.libs.concurrent.Execution$.defaultContext(Execution.scala:15)和play.api.libs.concurrent.Execution$Implicits$.defaultContext(Execution.scala:12)处设置默认上下文。在play.api.libs.ws.ning.NingWSRequest$$anon$2.onBodyPartReceived(NingWS.scala:322)处,找不到键为'play'的配置设置。在com.ning.http.client.providers.netty.NettyAsyncHttpProvider.updateBodyAndInterrupt(NettyAsyncHttpProvider.java:1568)处出现错误。 在com.ning.http.client.providers.netty.NettyAsyncHttpProvider.access$2900(NettyAsyncHttpProvider.java:161)处访问对象,然后在com.ning.http.client.providers.netty.NettyAsyncHttpProvider$HttpProtocol.handle(NettyAsyncHttpProvider.java:2233)处处理Http协议。在com.ning.http.client.providers.netty.NettyAsyncHttpProvider.messageReceived(NettyAsyncHttpProvider.java:1227)处接收消息,在org.jboss.netty.handler.stream.ChunkedWriteHandler.handleUpstream(ChunkedWriteHandler.java:142)和org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:296)中继续处理消息。在org.jboss.netty.handler.codec.frame.FrameDecoder.unfoldAndFireMessageReceived(FrameDecoder.java:459)和org.jboss.netty.handler.codec.replay.ReplayingDecoder.callDecode(ReplayingDecoder.java:536)中重新编码消息,并在org.jboss.netty.handler.codec.replay.ReplayingDecoder.messageReceived(ReplayingDecoder.java:435)中接收重新编码后的消息。在org.jboss.netty.handler.codec.http.HttpClientCodec.handleUpstream(HttpClientCodec.java:92)中处理HTTP客户端编解码器。在org.jboss.netty.channel.socket.nio.NioWorker.read(NioWorker.java:88)处读取数据,接着在org.jboss.netty.channel.socket.nio.AbstractNioWorker.process(AbstractNioWorker.java:108)和org.jboss.netty.channel.socket.nio.AbstractNioSelector.run(AbstractNioSelector.java:318)中继续处理数据,然后在org.jboss.netty.channel.socket.nio.AbstractNioWorker.run(AbstractNioWorker.java:89)和org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:178)中运行worker。最后,在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)和java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)和java.lang.Thread.run(Thread.java:724)处执行线程。
我使用sbt assembly来制作jar包,并在spark job-server中执行任务。我的任务中没有使用文件配置(如application.conf、reference.conf等)。
请帮助我。
1个回答

13

我不知道问题的根源。

以下步骤解决了它:

val parsedConfig = ConfigFactory.parseFile(new File("src/main/resources/application.conf"))

val conf = ConfigFactory.load(parsedConfig)

谢谢,兄弟。我也遇到了同样的问题,这个解决办法很有效。请考虑接受你自己的解决方案。 - pietro909
3
以上的 "val parsedConfig = ..." 放在哪里?"val conf" 有什么用处? - Scott Rice

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接