首页 文章

Clojure Yesql无法找到查询文件

提问于
浏览
5

我在我的测试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 回答

  • 9

    该文件必须位于您可以使用的类路径中

    lein classpath
    

    看看前几个条目,它们看起来与以下类似:

    /git/project/test:/git/project/src:/git/project/dev-resources:/git/project/resources:...
    

    既然你已经把它放到了 resources 中,你就定了 . 但重要的是,传递给 defqueries 的路径必须相对于类路径,因此在您的情况下相对于 resources

    (defqueries "queries.sql")
    

    slurp 有效,因为它直接在您的文件系统上运行,而不仅仅在类路径上运行 . 由于您在项目根目录中启动了REPL, resources/queries.sql 是一个完全有效的路径 .

相关问题