簡體   English   中英

Clojure的require函數中的別名不起作用

[英]Alias in Clojure's require function doesn't work

我想使用clojure.java.jdbc來運行一些sql查詢。 該repl給了我CompilerException java.lang.RuntimeException:沒有這樣的命名空間:jdbc

代碼和例外是

  (require `[clojure.java.jdbc :as jdbc])
  (def db-spec {:classname "com.mysql.jdbc.Driver" :subprotocol "mysql" :subname   "//localhost:3306/foo" :user "root" :password "1234"})
  (jdbc/query db-spec ["select * from client"])
  => nil
  => #'gaga.core/db-spec
  CompilerException java.lang.RuntimeException: No such namespace: jdbc, compiling:   (C:\Users\User\.IdeaIC14\system\tmp\form-init1177514063701175563.clj:3:1) 

在我看來,require函數中的別名定義不起作用。 如果我使用全名clojure.java.jdbc替換上述代碼中的jdbc別名,則一切似乎都可以正常工作:

(require `[clojure.java.jdbc :as jdbc])
(def db-spec {:classname "com.mysql.jdbc.Driver" :subprotocol "mysql" :subname "//localhost:3306/foo" :user "root" :password "1234"})
(clojure.java.jdbc/query db-spec ["select * from client"])
=> nil
=> #'gaga.core/db-spec
=> ({:birthday #inst "1990-09-08T14:00:00.000-00:00", :gender 0, :addressid 1, :mobile "13890879283", :idnum "31090818790987", :idtype 0, :name "xiaomao", :version 0, :id 1})

我的project.cli在下面

(defproject gaga "0.1.0-SNAPSHOT"
            :description "FIXME: write description"
            :url "http://example.com/FIXME"
            :license {:name "Eclipse Public License"
                      :url  "http://www.eclipse.org/legal/epl-v10.html"}
            :dependencies [[org.clojure/clojure "1.6.0"] [org.clojure/java.jdbc "0.3.6"] [mysql/mysql-connector-java "5.1.35"]]
            :main ^:skip-aot gaga.core
            :target-path "target/%s"
            :profiles {:uberjar {:aot :all}})

有人知道原因嗎?

所以基本上像我測試的那樣,它是語法錯誤,要求您必須使用

(require '[clojure.java.jdbc :as jdbc])

表示使用'(撇號)代替`(急性)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM