Clojure China

clojure nrepl

#1

最近在用clojure

#2

最近在用clojure写一个web服务端程序,框架用的是luminus,发现了一个问题,当我另外新建一个test.clj的文件的时候,如果我不在源代码的根目录的core.clj下面require一下这个test namespace的时候,
如果我用lein repl :connect nrepl://localhost:7000连到nrepl里面去的时候,然后通过
(in-ns 'test)来切换namespace,然后我要获取里面一个def定义的变量的时候,就会报下面的错误:
CompilerException java.lang.RuntimeException: Unable to resolve symbol: share-out in this context, compiling:(null:0:0)
但是如果我在core.clj里面require一下这个namespace,然后再切换到这个test的namespace,就可以正常获取到这个变量的值。
百思不得其解,编译生成jar包的时候,这些namespace不是应该已经不编译进去了吗?那我通过nrepl连接上去的时候应该也能正常访问这个namespace啊?

#3

如果真是这样就麻烦了,我自己会新建很多.clj文件,然后想通过nrepl进行调试,难不成我需要把我新建的每一个clj都在core.clj里面require一遍嚒?
对clojure比较熟的大神给我解答一下,谢谢^_^!

#4

:joy: 找不到的namespace需要进行load 一下,然后再通过in-ns来切换namespace就可以了,不知道这样做的理由是啥