我在我的测试Clojure项目中的'm trying to use Kris Jenkins' s Yesql库 . 我用单个查询创建了一个示例 queries.sql
文件 . 单 core.clj
文件如下所示( precalc
是测试项目的名称):
(ns precalc.core)
(require '[yesql.core :refer [defqueries defquery]])
(println (defqueries "resources/queries.sql"))
(defquery col-type "resources/queries.sql")
(slurp "resources/queries.sql")
试图评估时,例如第4行,我明白了
;!!CompilerException java.io.FileNotFoundException: resources/queries.sql, compiling:(precalc/core.clj:4:10)
我也尝试将 queries.sql
放入根项目文件夹中,但无济于事 . 虽然啜食有效 . 我的错误必须非常明显 . 有人可以帮忙吗?
我使用Leiningen的复制品,Macvim和Tim Pope的vim-fireplace插件,通过cider-nrepl连接 .
谢谢!
1 回答
该文件必须位于您可以使用的类路径中
看看前几个条目,它们看起来与以下类似:
既然你已经把它放到了
resources
中,你就定了 . 但重要的是,传递给defqueries
的路径必须相对于类路径,因此在您的情况下相对于resources
:slurp
有效,因为它直接在您的文件系统上运行,而不仅仅在类路径上运行 . 由于您在项目根目录中启动了REPL,resources/queries.sql
是一个完全有效的路径 .