Scala加载resources目录下grammar.txt出现not found错误如何解决
问题原因
你的resources目录放置位置不符合sbt的默认约定,sbt标准的主项目资源目录默认是src/main/resources,你当前将grammar.txt放在了src/resources层级下,虽然配置了自定义资源目录,但大概率是配置未生效或者构建工具未同步配置导致资源找不到。
解决办法
方案一(推荐:遵循标准约定)
- 将
src下的resources目录整体移动到src/main路径下,调整后目录结构如下:
. ├── build.sbt ├── src │ ├── main │ │ ├── resources │ │ │ └── grammar.txt │ │ └── scala │ │ ├── Builer.scala │ │ ├── Driver.scala │ │ ├── tokens.scala │ │ └── Tools.scala
- 删除
build.sbt中Compile / unmanagedResourceDirectories += sourceDirectory.value / "resources"这行自定义配置,sbt默认会自动扫描src/main/resources下的资源文件,原有加载代码val source = Source.fromResource("grammar.txt")可直接正常运行。
方案二(保留现有目录结构)
如果不想调整目录位置,按以下步骤验证配置:
- 执行sbt命令
show Compile / unmanagedResourceDirectories,检查输出结果中是否包含src/resources路径,如果没有则执行sbt reload重新加载配置 - 执行sbt命令
show Compile / resources,检查输出列表中是否存在grammar.txt,如果不存在,检查文件名大小写、拼写是否和代码中一致(资源加载对大小写敏感) - 如果是在IDE中运行,手动触发sbt配置同步,清除IDE构建缓存后重新运行。
内容的提问来源于stack exchange,提问作者Node.JS
相关产品推荐
相关产品推荐

