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

欢迎!请参阅 关于 页面以获取更多关于此如何工作的情况。

0
错误

0

无论运行哪个 GitHub 项目,我都会遇到相同的错误。

现在我从《Clojure coding for 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 中未指定 :main 命名空间。

我该做什么?我到底做错了什么?

1 答案

0

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

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

谢谢,我试了,我得到了这个

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

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


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


`--quote-args` 标志对传递的参数进行引号处理,而不是将它们转换为字符串。来自命令行的参数总是字符串,因此这仅在从 :aliases 调用时应使用。

by
需要是一个完全限定的命名空间

lein run -m clojure-noob.core

或将以下内容添加到 project.clj 文件中

:main clojure-noob.core
...