将(in-ns 'dbx)
写入文件并加载它并不会更改repl的默认命名空间(使用cygwin / console)。命名空间仍然是user=>
,而不是dbx=>
。
vikrant[28] clj
Clojure 1.3.0
user=> (load-file "try1.clj")
#(Namespace dbx)
user=>
如何在脚本文件中定义的命名空间中启动REPL?
答案 0 :(得分:21)
现在是:repl-options {:init-ns foo.bar}
。
请参阅https://github.com/technomancy/leiningen/blob/master/sample.project.clj
答案 1 :(得分:7)
如果您使用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
与Leiningen一起构建项目。然后输入lein repl
以调用命名空间中的REPL。 REPL提示符如下所示:
test.core=>
答案 2 :(得分:1)
java -cp .;clojure-1.3.0.jar; clojure.main -e \
"(ns dbx) (clojure.main/repl) (in-ns 'dbx) (clojure.core/use 'clojure.core)"
答案 3 :(得分:1)
除了Carlos' answer建议:repl-options {:init-ns foo.bar}
之外,我还成功地将:dev {:main user}
添加到我的个人资料中。
提供更多背景信息:
;; /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]]))
答案 4 :(得分:1)
使用tools.deps的一种方法是定义别名并在其中执行某些形式:
:aliases
{:cursive {:main-opts ["-e" "(load \"de/sveri/getless/user\")"
"-e" "(de.sveri.getless.user/reset)"]}
这将加载de.sveri.getless.user
名称空间,然后执行de.sveri.getless.user.reset
函数。
答案 5 :(得分:0)
(ns dbx)
(clojure.main/repl)
(in-ns 'dbx)
(clojure.core/use 'clojure.core)
答案 6 :(得分:0)
在最近的Clojure版本中有更好的方法:
java -cp myapp.jar clojure.main -m myapp.core