Что не так с директивой (используйте 'korma.db)?
Когда я пытаюсь создать Uberjar с помощью lein со следующим очень простым тестовым файлом Clojure, я получаю сообщение об ошибке
Compiling korma-test.core
Exception in thread "main" java.lang.Exception:
lib names inside prefix lists must not contain periods, compiling:(core.clj:1:1)
и не могу понять, почему. Я получил (use 'korma.db)
из раздела документации на http://sqlkorma.com/, а также попытался выполнить требование require (не перечислено в моих примерах здесь).
project.clj
(defproject korma-test "0.1.0-SNAPSHOT"
:description "korma db test"
:url "http://example.com/FIXME"
:license {:name "Eclipse Public License"
:url "http://www.eclipse.org/legal/epl-v10.html"}
:dependencies [[org.clojure/clojure "1.5.1"]
[korma "0.3.0-RC5"]]
:main korma-test.core)
core.clj (упрощенно)
(ns korma-test.core
(:gen-class)
(use 'korma.db)
(require '[clojure.string :as str])
(:import java.util.Date)
)
(defn -main
[& args]
(let [opts (parse-opts args)
start-time (str (Date.))]))
1 ответ
Решение
ns
макрос использует ключевые слова вместо функций и принимает кавычки.
(ns korma-test.core
...
(:use korma.db)
(:require [clojure.string :as str])
...)
Здесь есть хорошая статья: http://blog.8thlight.com/colin-jones/2010/12/05/clojure-libs-and-namespaces-require-use-import-and-ns.html