clojure 命名空间是如何查找的?
首先,我不是 Java 程序员,因此如果您的答案不是用 Java 定义的(因为这很有意义),那将会很有帮助。
我有一个 leiningen 项目(特别是使用 noir 的 Web 项目),使用似乎是将 clojure 源文件放入 中的常见模式src/您的命名空间/
。到目前为止,我已经成功添加了目录和文件,并且我一直使用文件路径作为 ns 的基础(遵循我在生成的代码中看到的模式)。
我添加了一个不起作用的新文件,我想知道为什么。它的路径是PROJECT-ROOT/src/bayou/lib/api-helpers.clj
,它的命名空间是(ns bayou.lib.api-helpers)
。我收到的具体错误是:
java.io.FileNotFoundException:无法在类路径上找到 bayou/lib/api_helpers__init.class 或 bayou/lib/api_helpers.clj
为了让 clojure 识别命名空间,需要采取哪些步骤?
To start off I am not a Java programmer, so it would be helpful if your answers are not defined in terms of Java (inasmuch as that makes sense).
I have a leiningen project (specifically a web project using noir) using what seems to be a common pattern of putting your clojure source files in src/YOUR-NAMESPACE/
. So far I've had success adding directories and files, and I have been using the file path as the basis for the ns
(following the pattern I see in the generated code).
I added a new file that did not work, and I'm wondering why. It's path is PROJECT-ROOT/src/bayou/lib/api-helpers.clj
and its namespace is (ns bayou.lib.api-helpers)
. The specific error I'm getting is:
java.io.FileNotFoundException: Could not locate bayou/lib/api_helpers__init.class or bayou/lib/api_helpers.clj on classpath
What are all the steps one as to take in order for clojure to recognize a namespace?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
问题在于命名空间中的连字符。
来自Clojure 的乐趣
以下是基本解释:https://stackoverflow.com/q/4451693/32174
The problem is the hyphen in the namespace.
From the Joy of Clojure
Here is the underlying explanation: https://stackoverflow.com/q/4451693/32174