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

欢迎!请参阅 关于 页面,了解更多此网站的工作方式。

0 投票
core.rrb-vector

我尝试在 JDK 11 EA 构建上测试 boot,发现依赖链中有某个 fipp,它依赖于 core.rrb-vector 0.0.11,使用以下错误失败

 java.lang.IllegalArgumentException: Must hint overloaded method: toArray

clojure.lang.Compiler$CompilerException: java.lang.IllegalArgumentException: 必须指定重载方法:toArray,编译:(clojure/core/rrb_vector/rrbt.clj:282:1)

         clojure.lang.ExceptionInfo: java.lang.IllegalArgumentException: Must hint overloaded method: toArray, compiling:(clojure/core/rrb_vector/rrbt.clj:282:1)

参考 Travis 构建: https://travis-ci.org/tirkarthi/boot/jobs/398611988#L803

这之前是可行的,但现在失败了。如果已在 master 中修复,而尚未发布,请随意关闭此问题。

成功的构建: https://travis-ci.org/tirkarthi/boot/jobs/398610834

9 答案

0 投票

评论由:wcohen

此补丁在 toArray 的 (link: 此 arr) 计数参数上添加了类型提示,导致在 JDK 11 EA 21 上成功编译和测试。也适用于 JDK 8 和 10。

0 投票

评论由:michalmarczyk

谢谢!已应用并推送。不久后将发布一个版本。

0 投票

评论由:wcohen

谢谢!今天早上我只签署/提交了Clojure CA。如果还有其他人需要跟进,请告知。

0 投票
评论者:jafingerhut

为了将来参考,如果还有人对这个问题感兴趣,这个错误在JDK 10和更早版本中并不会发生,因为interface java.util.Collection中的唯一一个名为"toArray"的1参数方法就是这个:https://download.java.net/java/early_access/jdk11/docs/api/java.base/java/util/Collection.html#toArray(T%5B%5D),其签名是"<T> T[] toArray​(T[] a)"

从JDK 11开始,interface java.util.Collection添加了一个名为"toArray"的另一个1参数方法:https://download.java.net/java/early_access/jdk11/docs/api/java.base/java/util/Collection.html#toArray(java.util.function.IntFunction),其签名是"default <T> T[] toArray​(IntFunction<T[]> generator)"

因此,没有类型提示,Clojure编译器无法确定在尝试使用1个参数('this'加上Clojure deftype方法定义中的额外一个参数)定义toArray的deftype形式时应该使用哪个方法。
0 投票

评论者:xtreak

感谢@jafingerhut所提供的信息。相关的提交:http://hg.openjdk.java.net/jdk/jdk11/rev/3ef0862bbb3d 。这也似乎会导致Clojure master分支的问题,Will Cohen的补丁帮助测试通过。我在那里打开了一个相关问题:https://dev.clojure.org/jira/browse/CLJ-2374

0 投票

评论者:kanwei

有没有可能发布一个rrb-vector的新版本?JDK 11现在处于RC版本,看起来master分支上的问题已经修复。谢谢!

0 投票

评论者:gshayban

这是最新版本中的内容,我认为可以关闭这个工单。

0 投票

评论人:[email protected]

此更改已合并至 https://github.com/clojure/core.rrb-vector/commit/b489b3249d56bb6a104c2d4ead2da8ade8dd29b4,并在0.0.12版本及更高版本中可用(书写时最新的版本是0.0.13)。为了便于复制粘贴

[org.clojure/core.rrb-vector "0.0.13"]

0 投票
参考: https://clojure.atlassian.net/browse/CRRBV-18(由xtreak报告)
...