运行lein run提示project.clj未指定:main命名空间错误如何解决
报错原因
执行lein run时提示No :main namespace specified in project.clj,是因为Leiningen没有在项目配置文件中找到程序入口声明,不知道要加载哪个命名空间下的-main函数启动程序。你虽然已经在源码中编写了符合规范的入口函数,但没有在project.clj中做对应配置。
修复方法
- 定位到项目根目录(即你当前执行
lein run命令的C:\Users\danny\New folder\cftbat-code路径),找到根目录下的project.clj配置文件 - 在
defproject配置段中添加:main配置项,值为你编写-main函数对应的命名空间clojure-noob.core
配置完成后的project.clj核心结构参考如下:(defproject clojure-noob "0.1.0-SNAPSHOT" :description "Clojure for the Brave and True example project" :dependencies [[org.clojure/clojure "1.11.1"]] ;; 新增以下行声明入口命名空间 :main clojure-noob.core :target-path "target/%s" :profiles {:uberjar {:aot :all}}) - 保存配置文件后,回到PowerShell重新执行
lein run即可正常运行,正常输出内容为I'm a little teapot!
排错注意
如果修改配置后仍报错,优先检查两个常见问题:
- 命名空间与文件路径是否匹配:
clojure-noob.core命名空间对应的源码文件必须存放在src/clojure_noob/core.clj路径下,注意Clojure命名空间中的横杠-对应文件/文件夹名的下划线_,路径名不要写错 - 执行命令的位置是否正确:
lein run必须在project.clj所在的项目根目录执行,不要进入src等子目录运行命令
内容的提问来源于stack exchange,提问作者MissCatarinaV
相关产品推荐
相关产品推荐

