当尝试加载一个文件,其命名空间声明与文件名不匹配时,A tools.namespace依赖关系跟踪器可能会陷入不一致的状态。
复制步骤
在一个新的Clojure项目中,在类路径上创建一个名为{{foo.clj}}的文件,包含命名空间声明{{(ns wrong-ns-declaration-for-foo)}}。
然后在REPL中
`
user=> (use 'clojure.tools.namespace.repl)
nil
user=> (refresh)
:reloading (wrong-ns-declaration-for-foo)
:error-while-loading wrong-ns-declaration-for-foo
`
编辑文件{{foo.clj}},使其命名空间声明正确:{{(ns foo)}}。
但在REPL中,{{refresh}}仍然不起作用
`
user=> (refresh)
:reloading (foo wrong-ns-declaration-for-foo)
:error-while-loading wrong-ns-declaration-for-foo
`
自tools.namespace 0.2.5以来,解决方法是通过调用{{clear}}。
user=> (clear){} user=> (refresh) :reloading (foo) :ok