我以前也遇到过这个问题,但是已经有一段时间了。现在它重新出现:我在 IntelliJ IDEA 中有一个基于 sbt-build 的 Scala 项目,当我启动运行配置时,程序无法通过
getResource
或 getResourceAsStream
找到资源。它之前确实有效,所以我的代码中的路径肯定是正确的。例如,这是项目浏览器的视图:
您可以看到
resources
目录已正确标记,因此应该找到“/at/iem/sysson/color-tables.bin”。这是读者代码:
package at.iem.sysson
object Main {
lazy val colorTables: Map[String, ColorPaletteTable] = {
val is = Main.getClass.getResourceAsStream("color-tables.bin")
...
}
}
这曾经在 IntelliJ 中工作,在运行
sbt
或创建独立应用程序时仍然有效。但现在我的 IntelliJ 运行配置已损坏 - getResourceAsStream
返回 null
。
我已经删除了
.idea
项目并从头开始重新创建它。我也退出并重新启动 IntelliJ。资源肯定有标注:
怎么了?它看起来与this相关,但删除并重新创建运行配置并没有帮助。我确实得到了
/usr/bin/java -Didea.launcher.port=7537 ...
,但是 resources
中根本就缺少 -classpath
目录。
同样的事情也发生在我身上(IntelliJ IDEA 2016.3.5)。
当我查看
target/scala-2.11/classes
目录时,资源目录/文件丢失了。
仅重建项目没有帮助,但是删除
target/scala-2.11/classes
并重建有帮助。
我今天遇到了同样的问题。 首先,我尝试关闭 intelliJ,手动从 Windows 资源管理器中删除
target
和 .idea
文件夹,然后在 IntelliJ 中重新加载项目,然后 sbt update、sbt clean 和 sbt 编译。这没有帮助。
第二次,我没有关闭IntelliJ,只是从IntelliJ项目资源管理器中删除了目标目录,然后我运行主类,它抛出了类未找到异常,因为没有目标文件夹。然后
sbt compile
并运行主类。现在它起作用了。