我有一个如下所示的.clj文件:
(ns clojure_crawl.core)
(require '[clj-http.client :as client])
(use 'clojure.contrib.json)
接下来是几个函数定义:
(defn f1 [] "" (+ 1 1))
(defn f2 [] "" (+ 2 2))
等等......
但是,当我运行命令“(使用'myfile.core:reload)”
时我的一些函数虽然在REPL中可见,却无法运行“遗失命名空间”错误。
如何添加依赖项以便REPL可以运行我的文件中定义的任何函数?
答案 0 :(得分:5)
如果您的代码位于“clojure_crawl / core.clj”中,则其命名空间应为clojure-crawl.core(请注意连字符)。见http://clojure.org/libs
答案 1 :(得分:3)
正如Joost所说,你必须小心使用连字符和下划线:无论你在命名空间名称中使用连字符,在相应的文件/目录名称中用下划线替换它(反之亦然)。
此外,不鼓励在clj源文件中使用require
和use
函数。相反,直接在ns
宏中声明所需的库:
(ns clojure-crawl.core
(:require [clj-http.client :as client])
(:use clojure.contrib.json))
这也需要正确引用您所需的命名空间。