如何在 SLIME REPL 中使用项目命名空间
我已经安装了 lein 和 swank 插件、Emacs、SLIME 和 clojure-mode,并使用 lein new 创建了一个新项目。我将该项目称为 clojure-test。然后,我在 Emacs 中打开 clojure_test/src/clojure_test/core.clj,并在此文件中调用 Mx clojure-jack-in
。这会打开一个 SLIME 窗口,效果很好;我可以使用 Cc Cl
加载代码,使用 Cc Mp
切换到我的项目命名空间,并使用我已添加到项目中的依赖项。
当我尝试从“用户”命名空间使用项目本身的命名空间时,就会出现问题。从“user”命名空间调用 SLIME 内部的 (use 'clojure-test)
会导致以下错误:
Could not locate clojure_test__init.class or clojure_test.clj on classpath:
[Thrown class java.io.FileNotFoundException]
为什么 Clojure 搜索这些文件?命名空间显然已经加载,因为我可以通过 Cc Mp 切换到它,但出于某种原因,Clojure 认为这些特定文件对于使用命名空间很重要。
如何设置我的项目以便可以使用 SLIME 的基本命名空间?既然 lein 应该处理这个问题,那么我没有提供它需要的哪些信息?
I've installed lein with the swank plugin, Emacs, SLIME, and clojure-mode, and created a new project using lein new. I've called the project clojure-test. I then open clojure_test/src/clojure_test/core.clj in Emacs, and while in this file call M-x clojure-jack-in
. This opens up a SLIME window, which works fine; I can load code using C-c C-l
, switch into my project namespace using C-c M-p
, and use dependencies that I've added to the project.
The problem arises when, from the "user" namespace, I attempt to use the namespace for the project itself. Calling (use 'clojure-test)
inside of SLIME from the "user" namespace results in the following error:
Could not locate clojure_test__init.class or clojure_test.clj on classpath:
[Thrown class java.io.FileNotFoundException]
Why does Clojure search for these files? The namespace is apparently already loaded, as I can switch into it via
C-c M-p
, but for some reason Clojure thinks these particular files are important to using the namespace.How do I setup my project so that I can use the base namespace from SLIME? Since lein is supposed to take care of this, what information am I not giving it that it needs?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
命名空间“clojure-test”应该位于 ./src/clojure_test.clj 中(./src 默认位于类路径中,除非您在 project.clj 文件中更改了它)
您是否将其放在 src/clojure_test/ 中core.clj(应该有 ns clojure-test.core)?
请参阅 http://clojure.org/libs 上的库文档
The namespace "clojure-test" should be in ./src/clojure_test.clj (./src is in the classpath by default unless you changed it in your project.clj file)
Did you put it in
src/clojure_test/core.clj
(which should have ns clojure-test.core instead) ?See the documentation for libs at http://clojure.org/libs