首页 > 解决方案 > Scala finagle 应用程序从类路径读取属性文件

问题描述

我们有一个使用 Finagle 的 Scala Web 应用程序,我们尝试从类路径中读取一些文件。它在单元测试环境中工作,但是当从 Intellij Idea 组装和运行时,我们得到一个空指针异常,因为它无法读取文件。我尝试了不同的版本

val s = Thread.currentThread().getContextClassLoader.getResourceAsStream("env.txt")
val parent = Thread.currentThread().getContextClassLoader.getParent()
val s2 = parent.getResourceAsStream("env.txt")
val s3 = this.getClass.getResourceAsStream("env.txt")
val s4 = ClassLoader.getSystemResourceAsStream("env.txt")

这一切都因空指针异常而失败,我解释它在类路径中找不到文件。

要启动组装的 jar,我运行:

java -classpath temp-conf -jar project-app/target/scala-2.12/cea-app.jar

有人有线索吗?

标签: scalaclasspathclassloaderresource-files

解决方案


Scala sbt 组装文档;

注意:如果你对 java 使用 -jar 选项,它将忽略 -cp,所以如果你有多个 JAR 文件,你必须使用 -cp 并传递主类: java -cp "jar1.jar:jar2.jar" Main


推荐阅读