2

问题

是否可以将加载文件分为两个步骤:

(1) compile and
(2) load ?

语境

我正在将热代码重新加载到远程机器上。我不想将源代码发送到机器上,然后让机器加载文件。相反,我想将 *.class 文件传送到机器上,并让机器重新加载带有 *.class 的命名空间

因此,我想要一种方法:

(1) transform *.clj files to *.class files that can be hot-reloaded

(2) I need to be able to call remove-ns on them later (when they have to be replaced)

编辑

我也很高兴使用 (require :reload ... ) -- 再次,只要我可以提供一个 *.class 文件而不是我的 *.clj 文件。

谢谢!

4

1 回答 1

0

简短的回答:

  1. 在本地机器上,使用compile将您的 clojure 源代码编译成 .class 文件。
  2. 将这些上传到您的远程服务器。
  3. 使用require来(重新)加载命名空间。

在您的源代码中,您应该依赖requireor load-file,特别是出于这个原因。在运行时,您无法确定命名空间是否来自源文件、已编译的二进制文件。

于 2012-06-12T16:29:35.783 回答