在线填写您的想法《2024 Clojure 状态调查!》调查问卷

欢迎!请参阅关于页面,了解更多关于该页面如何工作的信息。

0 投票
命名空间和变量

在建议的项目结构中学习入门教程。

├── time-lib
│   ├── deps.edn
│   └── src
│       └── hello_time.clj
└── hello-world
    ├── deps.edn
    └── src
        └── hello.clj

文件 time-lib/hello-world/deps.edn 这样引用 :local/root{:deps {time-lib/time-lib {:local/root "../time-lib"}}}

当我在以下目录中运行 clj -X hello/run
从目录: ~/projects/hello-world

那么我得到一个预期中的当前时间结果。

然而,如果我向上一级目录并从 ~/projects/ 运行相同命令,那么我会收到一个错误
“无法加载命名空间:hello”

这真的是“加载”命名空间的失败?在这种情况下,我想知道如何将绝对路径强加到:local/root 上,或者这是否是找不到 hello.clj 的失败?

当我尝试通过在项目文件夹下运行 clj -X hello-world/hello/run 来帮助 clj 找到文件时,我仍然收到命名空间错误。

我检查了一些文档,但关于如何操作的信息似乎不多。

1 答案

+1 投票

Clojure CLI 依赖于当前目录下的 deps.edn,所以当你移动到根目录(~/projects)时,你将不再有 deps.edn,并且所有项目都不会出现在你的类路径上。你可以使用 clj -Spath 来查看计算出的类路径,以验证发生了什么。

...