2024年Clojure状态调查中分享您的想法!

欢迎!请查看关于页面以获取有关如何使用此功能的更多信息。

0
错误 用户

0

无论我运行哪个 GitHub 项目都会出现同一个错误。

现在我从一个简单的例子开始,这个例子来自《Clojure for the Brave and True》一书,同样的错误出现了。

(ns clojure-noob.core (:gen-class))

(defn -main "I don't do a whole lot ... yet." [& args] (println "I'm a little teapot!"))

错误是 > PS C:\Users\danny\New folder\cftbat-code> lein run
在 project.clj 中没有指定主命名空间。

我该怎么做?我犯了什么错误?

1个答案

0
用户

您需要告诉 lein 哪个 命名空间包含您要运行的 -main 函数:可能是 clojure-noob.core。您可能认为您的程序只有一个命名空间,但实际上它将包含多个,包括例如 clojure.core, clojure.repl, clojure.main 等,以及您项目包含的任何其他内容。

命令 lein help run 将提供如何指定要运行的命名空间的说明。

用户
谢谢,我试了,结果是这个

PS C:\Users\danny> lein run core.clj
在 project.clj 中没有指定主命名空间。
PS C:\Users\danny> lein help run
运行项目的 -main 函数。

用法:lein run [--] [ARGS...]
调用 project.clj 中指定为 :main 的命名空间中的 -main 函数。
您可以使用 -- 来转义第一个参数,如果它以 '-' 或 ':' 开头。
如果您的 main 函数不是名为 "-main",您可以使用命名空间符号
例如 clojure.main/main。

用法:lein run -m NAMESPACE[/MAIN_FUNCTION] [--] [ARGS...]
调用指定命名空间中的 main 函数。您可能需要使用 -- 来
转义以 '-' 或 ':' 开头的第一个参数。

`--quote-args` 标志引用传递的参数,而不是将它们转换为字符串。
来自命令行的参数始终是字符串,因此当从 :aliases 调用
时才使用此功能。
by
它必须是完整的命名空间

lein run -m clojure-noob.core

或者,您可以在 project.clj 文件中添加以下内容

:main clojure-noob.core
...