Clojure 2024调查问卷中分享您的想法吧!

欢迎!请阅读关于页面以了解更多关于该平台的信息。

0
错误

0

我在运行的任意 GitHub 项目中都会遇到相同的错误。

现在我已经从《勇敢的真正Clojure》这本书中开始了简单的示例,并出现了相同的问题。

(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 可以获取如何指定运行的命名空间 instructions。

谢谢,我已经尝试了,结果是

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 函数不是名为 "-main",您可以使用命名空间符号
例如 clojure.main/main。

用法:lein run -m NAMESPACE[/MAIN_FUNCTION] [--] [ARGS...]
调用指定命名空间中的 main 函数。如果第一个参数以 `-` 或 `:` 开头,您可能需要使用 `--` 来转义。
这会将传递的参数引用起来,而不是将它们转换为字符串。来自命令行的参数始终是字符串,因此这仅适用于从别名中调用时。

`--quote-args` 标志引用传递的参数,而不是将其转换为字符串。命令行来的参数始终是字符串,所以这仅在从别名调用时才适用。
相关提问
头像 by
它需要是完全限定的命名空间

lein run -m clojure-noob.core

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

:main clojure-noob.core
...