请在2024 Clojure状态调查!中分享您的想法。

欢迎!请参阅关于页面获取更多关于这个网站如何运作的信息。

+1投票
Clojure

问题
我尝试在GraalVM中使用{{clojure.stracktrace/print-stack-trace}},但不起作用,因为需要反射来查找{{getMessage}}方法。

建议的解决方案
可以通过添加类型提示解决这个问题。

概述了警告
(set! warn-on-reflection true)
:

反射警告,/tmp/stacktrace.clj:24:18 - 无法解析字段getCause。反射警告,/tmp/stacktrace.clj:32:15 - 无法解析字段getClassName。反射警告,/tmp/stacktrace.clj:33:9 - 无法解析字段getMethodName。反射警告,/tmp/stacktrace.clj:38:26 - 无法解析字段getFileName。反射警告,/tmp/stacktrace.clj:38:47 - 无法解析字段getLineNumber。反射警告,/tmp/stacktrace.clj:45:42 - 无法解析字段getMessage。反射警告,/tmp/stacktrace.clj:24:18 - 无法解析字段getCause。

补丁 CLJ-2502-2.patch移除了不需要的空格更改,并将{{root-cause}}的类型提示提到了更靠前的位置。

审核者:Alex Miller

6 个答案

0投票

评论者:borkdude

我愿意在审查这个问题之后自行实现修复。

0投票

评论者:alexmiller

去吧!在补丁中,您可以将warn-on-reflect设置放置在代码顶部。

0投票

评论者:borkdude

我在GraalVM上进行测试,现在它工作了。

0投票

评论者:alexmiller

那里似乎有一些多余的缩进改变 - 如果你能最小化这些,那将很有帮助。对于根本原因,我更喜欢将类型提示尽可能地提到(在参数中)。你能更新这些吗?

0投票

评论者:borkdude

完成。

0投票
参考:https://clojure.atlassian.net/browse/CLJ-2502(由borkdude报告)
...