简而言之;
lein repl
命令会从project.clj
中定义的:main
命名空间开始,而不是默认的user
命名空间。
细节
我有一个Leiningen项目,部署为超级JAR包形式的命令行应用程序,因此可以像下面这样运行它:
java -jar my-app-1.0-standalone.jar --some --args
我还有一个dev/user.clj
,可以给我提供一个漂亮的REPL环境,如这里所述。
我的project.clj
长这样:
(defproject my-app "1.0"
:main my-app.cli
:aot [my-app.cli]
:profiles {:dev {:source-paths ["src" "dev"]}})
当我使用命令行中的
lein repl
或从Emacs中的M-x cider-jack-in
启动REPL时,我处于my-app.cli
命名空间,而不是user
。如果我从
project.clj
中删除:main my-app.cli
,我的REPL将在user
命名空间中启动,但很明显这会破坏我的uberjar。有任何想法吗?
Could not locate user__init.class or user.clj on classpath
。它确实在user
命名空间中启动,但在到达那里之前有一个很大的堆栈跟踪。 - Ben Kovitzsrc/user.clj
。我可以在没有它的情况下重现您的错误,当我创建user.clj
时,我没有收到任何错误提示。 - Teodor