(requi-6ren">
gpt4 book ai didi

clojure.tools/命名空间刷新失败,错误代码为 "No namespace: foo"

转载 作者:行者123 更新时间:2023-12-02 14:50:53 26 4
gpt4 key购买 nike

我正在使用tools.namespace提供 REPL 上 namespace 的智能重新加载。但是,当调用 refreshrefresh-all 时,它会抛出错误。

user=> (require '[clojure.tools.namespace.repl :as tn])
user=> (tn/refresh)
:reloading (ep31.common ep31.routes ep31.config ep31.application user ep31.common-test ep31.example-test)
:error-while-loading user

java.lang.Exception: No namespace: ep31.config, compiling:(user.clj:1:1)

它似乎最终处于这种奇怪的状态,其中 (require ep31.config) 工作没有错误,但之后 namespace 实际上并未定义。

最佳答案

我大概明白了这一点,这似乎是多种情况的结合

  • 之前执行lein uberjar时,target/classes中留下了AOT编译的类
  • 当加载的命名空间是 AOT 编译时,tools.namespace 无法正常运行
  • target/classes 默认位于类路径上

长话短说,如果您之前构建了 jar/uberjar ,然后删除 target/ ,事情应该会再次开始工作。

我尚未解决的问题是为什么 target/classes 位于类路径中。我怀疑它是由 Leiningen 添加的,但还没有找到它发生的地点或原因。

关于clojure.tools/命名空间刷新失败,错误代码为 "No namespace: foo",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44246924/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com