以下是在REPL中复制的步骤
- (c.t.n.r/refresh)
成功
- 修改classpath中的任何文件
- (c.t.n.r/refresh)
失败,因为没有找到某些命名空间(不一定是相同的命名空间)
这总会在特定的项目中发生,但没有相对复杂程度相似的(已知)其他项目。对于涉及该项目的AOT编译/执行,require
而不使用(c.t.n.r/refresh)
也可以正常运行。对于(c.t.n.r/refresh)
,`clojure.tools.namespace.reload/track-reload-one`中的load-file
可用作require :reload
的替代品。除了require :reload
之外,尚不清楚此错误的根本原因,或者为什么load-file
可以工作,但这只是一个简单的补丁,且没有已知的缺点。目前我在REPL中每次都在热替换代码。
您可以通过https://github.com/alexandergunnarson/tools.namespace获取一个分支,如果需要的话,您可以向我提交补丁。