欢迎!请查看 关于 页面以获取更多关于这个工作原理的信息。
我在处理 clojure.core/repeat reducer。
评论由:jafingerhut 发布
Jason,你尝试使用 JDK 1.6.0 构建它了吗?我在 Mac OS X 10.6.8 + Oracle/Apple JDK 1.6.0 和 Ubuntu 11.10 + IBM JDK 1.6.0 上尝试了,并且在两者上它都能编译,但在测试期间失败,抛出了 jsr166y.ForkJoinTask 类的 ClassNotFoundException。
它在我的 Ubuntu 11.10 + Oracle JDK 1.7.0 上编译和测试没有问题。
评论由:jasonjckn 发布
这是一个影响所有 core.reducers 的问题。Alan Malloy 也遇到了这个问题。我尝试修复它,但最终升级到了 JDK 1.7。我不明白为什么会发生这种情况。
据我所知,这个问题仅限于 mvn test。
当我将 clojure 包含在一个 leiningen 项目中,并将 jsr166y.jar 添加到 lib 目录时,core.reducers 在 java 1.6 上正常运行。
杰森,你说在你的2012年5月17日的评论中提到了这适用于所有的 core.reducers。我不明白。在没有应用你的补丁之前,我可以在从 Clojure git 仓库中新鲜拉取的 JDK 1.6.0 任何一个版本上运行 "./antsetup.sh ; ant",在测试期间不会有任何错误。你是说 core.reducers 当前没有测试来模拟这个问题,但是你的补丁添加了这样的测试,即使没有对代码进行其他任何更改也会失败吗?
没错。现在你这么一说,我的补丁是第一个调用 r/fold(现有测试执行的是非并行化缩减)的单元测试。
随着Stuart Halloway在2012年6月8日向Clojure master提交的提交,标题为 "让reducers测试在ant下工作",补丁0001-repeat-for-clojure.core.reducers.patch,日期为2012年5月11日,现在能够在需要类 jsr166y.ForkJoinTask以及使用Oracle/Apple JDK 1.6和Linux IBM JDK 1.6的新单元测试中正确运行。
我在捐献者名单上。这个补丁还需要吗?抱歉延迟这么久。
这个补丁应该等到 http://dev.clojure.org/jira/browse/CLJ-993 被提交后再进行。我认为有一些共享代码。
评论者:gshayban
在1.7.0中,repeat 现在是可缩减的
我们可以关闭这个条目吗?
评论者:alexandergunnarson
我认为在并行处理的情况下包含此reducer将会很好,或者将CollFold扩展到clojure.lang.Repeat(这也许更简洁)。
CollFold
clojure.lang.Repeat