请在2024年Clojure调查问卷!中分享您的想法。

欢迎!请参阅关于页面获取更多有关该功能的详细信息。

0投票
编译器

目前gen-class只能在AOT编译时工作,但在JIT加载时仅评估为nil。
这种行为的原因是历史的,由于CLJ-979在1.7版本中发布,该版本修复了动态类加载器定义问题,同时还为gen-interface做了同样的改动。之所以没有也为gen-class做同样的处理,仅仅是因为我忘记了这一点。

此补丁修复了这个不一致性

补丁: 0001-CLJ-2343-define-and-load-class-while-JITing-gen-clas.patch

4个答案

0投票

评论者:kari

只是问一下,我在Clojure Slack中提出的那个问题是否与这个JIRA问题相关。
如果我在Clojure项目中有一个gen-class(例如:mygenclass),并且想使用命令刷新Clojure REPL中的所有命名空间
(do (require '(link: clojure.tools.namespace.repl :refer [refresh])) (refresh))
...然后我得到了一个错误:"在加载'mygenclass'后找不到命名空间'mygenclass'。"。

0投票

评论者:viesti

现在有了https://clojure.org/guides/deps_and_cli#aot_compilation文本:依赖和命令行接口,这个改动会使使用gen-class的库打包更加容易,因为不需要打包类文件(如果理解正确的话)。

0投票

评论者:viesti

友好地提醒一下,这次更改能有所帮助吗? :)

0投票
参考:[链接](https://clojure.atlassian.net/browse/CLJ-2343)(由bronsa报告)
...