首先,我不是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识别命名空间,采取了哪些步骤?
答案 0 :(得分:13)
问题是命名空间中的连字符。
来自 Clojure的喜悦
HYPHENS / UNDERSCORES如果您决定使用命名空间命名 连字符,àlamy-cool-lib,然后必须是相应的源文件 用下划线代替连字符命名(my_cool_lib.clj)。