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/目录执行相同的命令,那么我会收到一个错误
“Namespace could not be loaded: hello”

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

当我尝试通过在`projects/`目录中调用clj -X hello-world/hello/run来帮助clj找到文件时,我仍然收到命名空间错误。

我已经检查了一些文档,但看起来这些文档对此如何工作的描述很少。

1 个答案

+1

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

...