访问clojure webnoir项目中的资源文件

时间:2012-07-01 22:47:39

标签: clojure leiningen noir

我正在使用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)

所以问题很简单,我该怎么办才能访问该文件?

3 个答案:

答案 0 :(得分:3)

你实际上需要使用'资源' -

  1. (clojure.java.io/resource“relative / path”),返回一个网址 文件,

  2. (noir.io/get-resource“relative / path”)返回 文件,或

  3. (noir.io/slurp-resource“relative / path”),返回内容 该文件。

  4. 别担心 - 你不是第一个遇到这个问题的人!

答案 1 :(得分:2)

Slurp将从文件系统读取文件,而不是类路径。那么,你试图在那里做什么,你试图从文件系统的根目录读取/css/bootstrap.css中的文件,它就不存在了,就像错误信息所说的那样。

如果您只是为了测试目的而阅读它,那么您应该能够使用像resources / public / css / bootstrap.css这样的相对路径来啜饮它,假设您正在运行项目目录下的测试。

答案 2 :(得分:1)

检查运行时的实际类路径。 Chances是classspath引用./resources目录,而不是./resources/public目录。

尝试使用“/public/css/bootstrap.css”来解决此问题。