我刚刚将我的系统从Java 8更新到OpenJDK Java 11版本。我有一个项目不会编译,我得到以下错误:
Java.lang.IllegalArgumentException: Must hint overloaded method:
toArray, compiling:(flatland/ordered/set.clj:19:1)
Exception in thread "main" java.lang.IllegalArgumentException: Must
hint overloaded method: toArray, compiling:
(flatland/ordered/set.clj:19:1)
从外观上看,这个错误在这里得到了修复:https://dev.clojure.org/jira/browse/CLJ-2374
所以我将我的项目更新为clojure 1.10.0-RC3,现在我得到了这个错误:
Syntax error compiling deftype* at (flatland/ordered/set.clj:19:1).
Exception in thread "main" Syntax error compiling deftype* at
(flatland/ordered/set.clj:19:1).
有人看到这个错误吗?或者我有没有办法扩展Clojure的错误消息,向我显示我的项目中的哪个依赖项在编译过程中失败(可能是多个(?
我还注意到,我把第一个项目中失败的依赖项列表复制到了一个新项目中,并编译了新项目。但是,我没有引用deps列表中的依赖项或调用函数。Clojure是否引入了依赖项/库,然后从我的项目.clj中包含的库中引用所需的依赖项?
编辑***我发现这很可能是错误。
https://github.com/amalloy/ordered/pull/37
你已经有了答案,尽管我想我会把我的一般流程留给这个,因为它对后来出现的人有用:
- 在我的工具中打开任何自动AOT,这样我就可以得到一个不触发问题的回复
- 一次加载一个名称空间,直到找到触发问题的名称空间(这通常不会花很长时间;-(
- 注释掉该名称空间的一半依赖项,并评估文件顶部的
ns
表单 - 进行二进制搜索,直到找到触发它的一个或两个
- 在废弃项目中只加载该依赖项
- 。。。付出了很多努力
- 成功