Clojure 如何在不重置repl的情况下重新加载aot编译的类?

Clojure 如何在不重置repl的情况下重新加载aot编译的类?,clojure,Clojure,我使用gen class定义了一个java类,每次启动repl时它都会被编译。但是,如果我希望对类进行更改,我发现必须重新启动并重新编译该类。是否可以在不关闭repl的情况下执行此操作 一个例子 我正在做这个 项目中有一条线。clj :aot [hara.ova.impl] 假设文件已加载,我可以执行以下操作: (import hara.ova.Ova) (def a (Ova.)) 我想向类添加另一个方法bar,我只想在hara.ova.impl命名空间中定义-bar,调用compile

我使用
gen class
定义了一个java类,每次启动repl时它都会被编译。但是,如果我希望对类进行更改,我发现必须重新启动并重新编译该类。是否可以在不关闭repl的情况下执行此操作

一个例子 我正在做这个

项目中有一条线。clj

:aot [hara.ova.impl]
假设文件已加载,我可以执行以下操作:

(import hara.ova.Ova)
(def a (Ova.))
我想向类添加另一个方法
bar
,我只想在
hara.ova.impl
命名空间中定义
-bar
,调用
compile gen class
函数重新加载类,然后执行以下操作 在不重新加载repl的情况下执行此操作:

(import hara.ova.Ova)
(def a (Ova.))
(.bar a)

现在,C-C-k不允许这样做。

您需要调用命名空间上的
compile
函数


(ns测试)
(gen类:name test.Cls)
(注释(编译“测试”)


对compile的调用需要注释掉,这样它就不会递归地调用自己。我经常将这些内容留在开发文件中,以便通过计算编译表达式快速重新编译定义。

如果您使用Emacs进行编辑和NREPL,只需进入定义类的源文件并点击C-C-k即可。如果您没有使用Emacs和NREPL,那么您应该开始使用。哦,真的吗?我正在用它。我以前使用过swank,并且确信C-C-k不起作用。有什么变化吗?或者我只是在妄想?没有。。。我刚试过,它不适用于
gen类
OK。我会在早上上班的时候调查一下,看看能发现什么。你能分享更多关于你的项目结构的细节吗?我用一个例子更新了我的问题