Clojure lein repl在错误的命名空间中启动
TLDR强>Clojure lein repl在错误的命名空间中启动,clojure,leiningen,Clojure,Leiningen,TLDR lein repl根据需要在project.clj中的:main定义的命名空间中启动,而不是在user中启动 详细信息 我有一个项目作为命令行应用程序部署在uberjar中,因此我可以像这样运行它: java -jar my-app-1.0-standalone.jar --some --args 我还有一个dev/user.clj可以为我提供一个很好的REPL环境 我的project.clj如下所示: (defproject我的应用程序“1.0” :main my-app.cli
lein repl
根据需要在project.clj
中的:main
定义的命名空间中启动,而不是在user
中启动
详细信息
我有一个项目作为命令行应用程序部署在uberjar中,因此我可以像这样运行它:
java -jar my-app-1.0-standalone.jar --some --args
我还有一个dev/user.clj
可以为我提供一个很好的REPL环境
我的project.clj
如下所示:
(defproject我的应用程序“1.0”
:main my-app.cli
:aot[my app.cli]
:profiles{:dev{:sourcepath[“src”“dev”]})
当我从命令行使用lein REPL
或从Emacs使用M-x苹果酒插孔启动REPL时,我处于my app.cli
命名空间中,而不是user
如果我从project.clj
中删除:main my app.cli
,我的REPL将在user
名称空间中启动,正如我所期望的那样,但这显然会破坏我的uberjar
有什么想法吗?当lein repl任务运行时,它将按照以下优先顺序查找要切换到的ns:
在:repl选项的:init ns中指定的ns
指定的ns:主
用户ns
在您的情况下,请尝试添加:
:repl-options {:init-ns user}
为您的项目干杯。clj工作完美!谢谢。这个还能用吗?我刚刚在Clojure 1.9.0-beta2下的Leiningen 2.7.1中尝试了它,我得到了一个错误:在类路径上找不到user_uinit.class或user.clj。它确实从user
名称空间开始,但在它到达之前有一个大堆栈跟踪。@Ben Kovitz:尝试创建src/user.clj
。我可以在没有它的情况下再现您的错误,并且当我创建user.clj
时,我不会得到任何错误。