9

首先,我不是 Java 程序员,所以如果你的答案不是用 Java 定义的(因为这是有道理的),那将会很有帮助。

我有一个 leiningen 项目(特别是一个使用noir的网络项目),它使用了一种将 clojure 源文件放入src/YOUR-NAMESPACE/. 到目前为止,我已经成功添加了目录和文件,并且我一直使用文件路径作为基础ns(按照我在生成的代码中看到的模式)。

我添加了一个不起作用的新文件,我想知道为什么。它的路径是PROJECT-ROOT/src/bayou/lib/api-helpers.clj,它的命名空间是(ns bayou.lib.api-helpers)。我得到的具体错误是:

java.io.FileNotFoundException: Could not locate bayou/lib/api_helpers__init.class or bayou/lib/api_helpers.clj on classpath

为了让 clojure 识别名称空间,需要采取哪些步骤?

4

1 回答 1

13

问题是命名空间中的连字符。

来自Clojure 的喜悦

连字符/下划线 如果您决定使用连字符命名命名空间,例如 my-cool-lib,则相应的源文件必须使用下划线来代替连字符 (my_cool_lib.clj)。

这是基本解释:https ://stackoverflow.com/q/4451693/32174

于 2011-11-23T04:10:40.497 回答