首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Typesafe配置-空指针异常

Typesafe配置-空指针异常
EN

Stack Overflow用户
提问于 2014-03-10 12:26:49
回答 1查看 1.1K关注 0票数 1

我正在为我的Play/Scala/Akka应用程序手动构建类路径,这样我就可以在CI管道的不同阶段使用ScalaTest运行程序来测试我的应用程序,而不需要重新编译。但是,我得到以下错误:

代码语言:javascript
复制
java.lang.NullPointerException:
  at com.typesafe.config.impl.Parseable$ParseableResources.rawParseValue(Parseable.java:509)
  at com.typesafe.config.impl.Parseable$ParseableResources.rawParseValue(Parseable.java:492)
  at com.typesafe.config.impl.Parseable.parseValue(Parseable.java:171)
  at com.typesafe.config.impl.Parseable.parseValue(Parseable.java:165)
  at com.typesafe.config.impl.Parseable.parse(Parseable.java:204)
  at com.typesafe.config.impl.ConfigImpl$1.call(ConfigImpl.java:368)
  at com.typesafe.config.impl.ConfigImpl$1.call(ConfigImpl.java:365)
  at com.typesafe.config.impl.ConfigImpl$LoaderCache.getOrElseUpdate(ConfigImpl.java:58)
  at com.typesafe.config.impl.ConfigImpl.computeCachedConfig(ConfigImpl.java:86)
  at com.typesafe.config.impl.ConfigImpl.defaultReference(ConfigImpl.java:365)

下面是我正在运行的命令:

代码语言:javascript
复制
/usr/lib/jvm/java-7-openjdk//bin/java -Xmx256M -Xms32M -Xbootclasspath/a:$BOOTCP -classpath '""' -Dscala.home=/usr/opt/scala -Dscala.usejavacp=true -jar /home/nick/repos/testrunnnertest/lib/scalatest.jar -R target/scala-2.10/test-classes -o 

$BOOTCP的值是大量依赖项列表,包括应用程序jars、.ivy2中的依赖项和包含配置文件的文件夹(/conf,/test/resources)。我从shell脚本中复制了这个命令。我还将$BOOTCP的值用作-classpath的值,但仍然存在相同的问题。

这个问题只有在我运行我的验收测试时才会发生,这些测试正在旋转一个Play。因此,加载主应用程序信任的/conf似乎是一个问题,而不是在单元和集成测试愉快运行时加载查找的/test/resources信任。

EN

回答 1

Stack Overflow用户

发布于 2014-03-26 20:04:40

很晚才问到这个问题,但你想过吗?您的类路径上有哪个类型的配置版本?

主服务器上的第509行看起来不太合适:https://github.com/typesafehub/config/blob/master/config/src/main/java/com/typesafe/config/impl/Parseable.java#L509

因此,您可能有一个略有不同来源的版本。

版本1.0.2行509看起来可能更有可能:https://github.com/typesafehub/config/blob/v1.0.2/config/src/main/java/com/typesafe/config/impl/Parseable.java#L509

我想,在这一行中,类加载器很可能是空的?它应该来自于跟踪:https://github.com/typesafehub/config/blob/v1.0.2/config/src/main/java/com/typesafe/config/impl/ConfigImpl.java#L365,这反过来来自:https://github.com/typesafehub/config/blob/v1.0.2/config/src/main/java/com/typesafe/config/ConfigFactory.java#L380

因此,一种理论是,在抛出异常的情况下,线程没有设置上下文类加载器。如果是的话,我不能告诉你为什么在你的场景中是这样的,但也许它是一个线索。

我认为typesafe配置在任何情况下都不应该抛出NPE,所以我创建了https://github.com/typesafehub/config/issues/155来解决这个问题。但是,最有可能的是,线程上下文类加载器为null和/或如何设置线程上下文类加载器,并且没有向ConfigFactory方法提供其他类加载程序。

这是假设NPE来自空类加载器,我不认为这是问题所在,但从堆栈跟踪来看似乎是合理的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22300105

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档