我正在使用Leiningen进行一个小型的Clojure项目,其目录结构如下:
- 项目
- SRC
- 测试
- XXX
- login.clj
- 资源
- 公共
- CSS
- bootstrap.css
在test目录的login.clj文件中,我试图在respuces / publi / css目录中粘贴bootstrap.css文件:
(def css-file "/css/bootstrap.css")
(def css-contents (slurp css-file))
返回找不到文件的错误:
线程“main”中的异常java.io.FileNotFoundException:/css/bootstrap.css(没有这样的文件或目录),编译:(login.clj:10)
所以问题很简单,我该怎么办才能访问该文件?
答案 0 :(得分:3)
你实际上需要使用'资源' -
(clojure.java.io/resource“relative / path”),返回一个网址 文件,
(noir.io/get-resource“relative / path”)返回 文件,或
(noir.io/slurp-resource“relative / path”),返回内容 该文件。
别担心 - 你不是第一个遇到这个问题的人!
答案 1 :(得分:2)
Slurp将从文件系统读取文件,而不是类路径。那么,你试图在那里做什么,你试图从文件系统的根目录读取/css/bootstrap.css中的文件,它就不存在了,就像错误信息所说的那样。
如果您只是为了测试目的而阅读它,那么您应该能够使用像resources / public / css / bootstrap.css这样的相对路径来啜饮它,假设您正在运行项目目录下的测试。
答案 2 :(得分:1)
检查运行时的实际类路径。 Chances是classspath引用./resources目录,而不是./resources/public目录。
尝试使用“/public/css/bootstrap.css”来解决此问题。