欢迎!请在关于页面了解更多这个问答系统的工作方式。
我在处理clojure.core/repeat归约器。
评论者: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 而失败。
它在我的 Ubuntu 11.10 + Oracle JDK 1.7.0 上构建和测试得很顺利。
评论者:jasonjckn
这是一个影响 core.reducers 所有项目的问题。Alan Malloy 也遇到了这个问题。我尝试修复它,但最后还是升级到了 JDK 1.7。我不明白为什么会出现这种情况。
据我所知,这个问题仅限于 mvn test。
当我将 clojure 包含在一个 Leiningen 项目中,并在 lib 目录中添加 jsr166y.jar,core.reducers 在 java 1.6 的情况下可以正常工作。
Jason,你说它适用于你2012年5月17日的评论中提到的所有core.reducers。我不明白。在不应用你的补丁的情况下,我可以在任何提到的前JDK 1.6.0版本上运行一个全新的Clojure git仓库中的"./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日,现在在Oracle/Apple JDK 1.6和Linux IBM JDK 1.6下运行正确,甚至包括需要jsr166y.ForkJoinTask的新单元测试。
我在贡献者名单上。这个补丁还需要吗?抱歉延迟这么久。
此补丁应等待http://dev.clojure.org/jira/browse/CLJ-993获得提交。我认为有一些共享代码。
评论者:gshayban
现在在1.7.0中,repeat是可归约的。
能否关闭这个工单?
由:alexandergunnarson 发表的评论
我认为将其包含在并行处理的目的中会很好,或者将 CollFold 扩展到 clojure.lang.Repeat(这也许更简洁)。
CollFold
clojure.lang.Repeat