我有一个在 Tomcat 中运行的现有 Java webapp,我正在向其中添加一些原始的 Clojure 支持。目前,我只是将 Clojure 源文件作为资源包含在类路径中,并通过clojure.lang.RT
. 它很原始,但工作正常。
但是,我注意到 Tomcat 的WebappClassLoader
缓存资源是通过getResourceAsInputStream()
Clojure 用来检索和编译源代码的。也就是说,(require 'my-ns :reload)
即使磁盘上有更新的文件,也只会重新加载文件的缓存版本。有没有办法规避或避免 Clojure 文件的这种缓存?
经过多次无果的谷歌搜索后,我想到的最好的方法是使用反射手动删除WebappClassLoader.resourceEntries
糟糕的条目。
我肯定错过了什么。
“使用 Jetty/Glassfish/JBoss”、“重启 Tomcat”等答案不是我想要的。