簡體   English   中英

Clojure REPL忘記了類路徑

[英]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) 請注意, miscsrc內的文件夾。 您的項目可以命名為任何名稱,我認為它不會影響名稱空間。

假設您想要的是名稱空間misc.counter-window並且您的文件相應地位於src/misc/counter_window.clj ,則以下內容在repl中起作用

(use '[misc.counter-window])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM