[英]Clojure REPL forgets classpath
我有點像Clojure的新手,REPL中的某些內容確實讓我感到困惑。
我有一個名為“ misc”的項目,在“ misc / src / counter_window.clj”處有一個命名空間。 當我從項目根文件夾中輸入REPL時,我想導入counter_window的功能,但是我似乎每次都必須經歷以下奇怪的探戈:
user=> (use 'counter-window)
FileNotFoundException Could not locate counter_window__init.class or counter_window.clj on classpath. Please check that namespaces with dashes use underscores in the Clojure file name. clojure.lang.RT.load (RT.java:449)
user=> (use 'misc.counter-window)
CompilerException java.lang.Exception: namespace 'misc.counter-window' not found after loading '/misc/counter_window', compiling:(/tmp/form-init2530455467319465680.clj:1:1)
user=> (use 'counter-window)
nil ;; the import succeeds this third time.
FileNotFound異常中的警告似乎並不適用,因為該名稱空間已在counter_window.clj文件中稱為counter-window
。
那么為什么會這樣呢? 為什么導入第一次不起作用,但是第三次卻成功?
我認為文件路徑和名稱空間之間存在直接關系。 文件src/counter_window.clj
應該具有名稱空間聲明(ns counter-window)
。
命名空間misc.counter-window
應該在文件src/misc/counter_window.clj
。 即它將具有形式(ns misc.counter-window)
。 請注意, misc
是src
內的文件夾。 您的項目可以命名為任何名稱,我認為它不會影響名稱空間。
假設您想要的是名稱空間misc.counter-window
並且您的文件相應地位於src/misc/counter_window.clj
,則以下內容在repl中起作用
(use '[misc.counter-window])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.