【问题标题】:How are clojure namespaces looked up?如何查找 clojure 命名空间?
【发布时间】:2011-11-23 03:51:01
【问题描述】:

首先,我不是 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 识别命名空间,需要采取哪些步骤?

【问题讨论】:

标签: clojure classpath leiningen noir


【解决方案1】:

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

来自 Clojure 的乐趣

HYPHENS/UNDERSCORES 如果您决定将命名空间命名为 连字符,à la my-cool-lib,那么对应的源文件必须是 用下划线代替连字符命名 (my_cool_lib.clj)。

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

【讨论】:

  • 感谢您的快速回复!很有帮助。
猜你喜欢
  • 2011-08-31
  • 1970-01-01
  • 2011-04-15
  • 2016-06-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多