我使用gen-class
定义了一个java类,每次启动repl时都会编译。但是,如果我希望对类进行更改,我发现我必须重新启动并重新编译该类。无论如何都要在不关闭repl的情况下执行此操作吗?
我正在研究https://github.com/zcaudate/hara/blob/master/src/hara/ova/impl.clj
项目中有一条线。 CLJ
:aot [hara.ova.impl]
所以说文件已经加载了,我可以这样做:
(import hara.ova.Ova)
(def a (Ova.))
我想在类中添加另一个方法bar
,我只想在-bar
命名空间中定义hara.ova.impl
,调用compile-gen-class
函数来重新加载类和然后做
这没有重新加载repl:
(import hara.ova.Ova)
(def a (Ova.))
(.bar a)
现在,C-c C-k不允许这样做。
答案 0 :(得分:5)
您需要在命名空间上调用compile
函数。
(ns test)
(gen-class :name test.Cls)
(comment (compile 'test))
需要对编译调用进行注释,以便它不会递归调用自身。我经常将这些留在我的开发文件中,以通过评估编译表达式来快速重新编译定义。