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](https://clojure.atlassian.net/browse/CLJ-2502)(由borkdude报告)
...