我写了一个小命名空间来完成一些数据库操作,我想从另一个命名空间中使用它。通常将文件放在同一个目录中,然后执行具有多个命名空间的Clojure CLR
(ns program (:require [other-ns :as other]) (:gen-class))
将是所有必需的。然而,这在Clojure CLR中不起作用,编译器抱怨不了解other-ns。那么这样做的正确方法是什么?为每个名称空间分别组装?
[编辑]又如
another.clj
(ns another)
(defn hello [name] (str "Hello " name))
program.clj
(ns program
(:require [another :as a])
(:gen-class))
我在repl加载program.clj和得到这样的信息:
FileNotFoundException在加载路径上找不到another.clj.dll或another.clj。 clojure.lang.RT.load(d:\ work \ clojure-clr \ Clojure \ Clojure \ Lib \ RT.cs:3068)
看看http://clojure.org/libs并检查你是否在预期位置有每个名称空间/文件。如果你无法弄清楚什么是错误的,请显示(ns ..)表单,它们在文件系统中的位置以及你看到的错误。 – 2012-04-10 17:44:06
您是否在首次编译该项目时遇到错误?尝试构建它,然后在REPL中加载program.clj。我唯一能想到的其他问题是你使用新的vsClojure吗? – Rob 2012-04-13 12:45:45