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

欢迎!请参阅关于页面以了解更多关于如何工作的信息。

+1
Clojure

问题
我尝试使用 {{clojure.stracktrace/print-stack-trace}} 与 GraalVM 一起使用,但由于需要反射来查找 {{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报告)
...