如何在 SLIME REPL 中使用项目命名空间

发布于 2024-12-27 11:19:17 字数 747 浏览 0 评论 0原文

我已经安装了 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]
  1. 为什么 Clojure 搜索这些文件?命名空间显然已经加载,因为我可以通过 Cc Mp 切换到它,但出于某种原因,Clojure 认为这些特定文件对于使用命名空间很重要。

  2. 如何设置我的项目以便可以使用 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]
  1. 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.

  2. 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

悸初 2025-01-03 11:19:17

命名空间“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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文