如何查找clojure名称空间?

时间:2011-11-23 03:51:02

标签: clojure classpath leiningen noir

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

我有一个leiningen项目(特别是一个使用noir的web项目),使用的似乎是将你的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识别命名空间,采取了哪些步骤?

1 个答案:

答案 0 :(得分:13)

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

来自 Clojure的喜悦

  

HYPHENS / UNDERSCORES如果您决定使用命名空间命名   连字符,àlamy-cool-lib,然后必须是相应的源文件   用下划线代替连字符命名(my_cool_lib.clj)。

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