将(in-ns 'dbx)
写入文件并加载它不会改变repl的默认名称空间(使用cygwin/console)。命名空间仍然是user=>
,而不是dbx=>
。如何在用户定义的命名空间中启动REPL?
vikrant[28] clj
Clojure 1.3.0
user=> (load-file "try1.clj")
#(Namespace dbx)
user=>
如何在脚本文件中定义的名称空间中启动REPL?
将(in-ns 'dbx)
写入文件并加载它不会改变repl的默认名称空间(使用cygwin/console)。命名空间仍然是user=>
,而不是dbx=>
。如何在用户定义的命名空间中启动REPL?
vikrant[28] clj
Clojure 1.3.0
user=> (load-file "try1.clj")
#(Namespace dbx)
user=>
如何在脚本文件中定义的名称空间中启动REPL?
java -cp .;clojure-1.3.0.jar; clojure.main -e \
"(ns dbx) (clojure.main/repl) (in-ns 'dbx) (clojure.core/use 'clojure.core)"
@Adrian Mouat,谢谢你取消你。 – BLUEPIXY
如果使用Leiningen建立你的项目,然后添加到您的项目的project.clj
文件:
(defproject test "1.0.0-SNAPSHOT"
:description "FIXME: write description"
:dependencies [[org.clojure/clojure "1.2.1"]]
:main test.core)
在你src/test/core.clj
文件,添加它来创建一个test.core
命名空间:
(ns test.core)
(defn -main [& args])
接下来,与莱宁宁建立您的项目与lein compile
。然后输入lein repl
以在您的名称空间中调用REPL。在REPL提示看起来像:
test.core=>
我推荐使用Carlos的[更新的答案](http://stackoverflow.com/a/24364816/109618)。 –
(ns dbx) (clojure.main/repl) (in-ns 'dbx) (clojure.core/use 'clojure.core)
如今是:repl-options {:init-ns foo.bar}
。
见https://github.com/technomancy/leiningen/blob/master/sample.project.clj
2017年不适用于我 –
@LincolnBergeson它仍然适用于我使用最新的leiningen - 版本2.7.1,并使用'lein new app'创建了一个全新的应用程序项目。 –
有一个更好的方法在最近Clojure的版本中做到这一点:
java -cp myapp.jar clojure.main -m myapp.core
除了Carlos' answer暗示:repl-options {:init-ns foo.bar}
,我也有过成功与添加:dev {:main user}
我profile.clj。
为了让更多的上下文:
;; /foo/profile.clj
...
:main foo.core
:dev {:main user
:source-paths ["dev"]}`
...
;; /foo/dev/user.clj
(ns user
(:require
[clojure.pprint :refer (pprint)]
[clojure.repl :refer :all]
[clojure.string :as str]
[clojure.test :refer [run-tests run-all-tests]]
[clojure.tools.namespace.repl :refer [refresh refresh-all]]))
(NS DBX) (clojure.main/REPL) (以纳秒 'DBX) (clojure.core /使用' clojure.core) – vikbehal
只是一个快速评论格式化。只需复制/粘贴cygwin控制台中的文本,而不是简单地对其进行屏幕截图,就会更简洁,更容易。 –