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

欢迎!有关本工作方式更多的信息,请参阅关于页面

+1
Clojure

问题
我尝试使用{{clojure.stracktrace/print-stack-trace}}与GraalVM搭配,但这是无法工作的,因为需要反射来查找getMessage方法。

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

关于(set! warn-on-reflection true)产生的警告概述
`(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](https://clojure.atlassian.net/browse/CLJ-2502)(由borkdude报告)
...