2011-11-29 23 views
8

(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?

+1

(NS DBX) (clojure.main/REPL) (以納秒 'DBX) (clojure.core /使用' clojure.core) – vikbehal

+3

只是一個快速評論格式化。只需複製/粘貼cygwin控制檯中的文本,而不是簡單地對其進行屏幕截圖,就會更簡潔,更容易。 –

回答

1
java -cp .;clojure-1.3.0.jar; clojure.main -e \ 
"(ns dbx) (clojure.main/repl) (in-ns 'dbx) (clojure.core/use 'clojure.core)" 
+0

@Adrian Mouat,謝謝你取消你。 – BLUEPIXY

6

如果使用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=> 
+1

我推薦使用Carlos的[更新的答案](http://stackoverflow.com/a/24364816/109618)。 –

0

(ns dbx) (clojure.main/repl) (in-ns 'dbx) (clojure.core/use 'clojure.core)

0

有一個更好的方法在最近Clojure的版本中做到這一點:

java -cp myapp.jar clojure.main -m myapp.core

1

除了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]]))