2

我刚刚将我的系统从 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 是否会引入依赖项/库,然后从我的 project.clj 中包含的库中引用所需的依赖项?

编辑***我发现这很可能是错误。

https://github.com/amalloy/ordered/pull/37

4

1 回答 1

2

你已经有了答案,虽然我想我会留下我的一般流程,以防它对后来出现的人有用:

  • 在我的工具中打开任何自动 AOT,这样我就可以在没有触发问题的情况下获得 repl。
  • 一次加载一个命名空间,直到我找到一个触发问题的命名空间(这通常不会花费很长时间;-)
  • 注释掉该命名空间的一半依赖项并评估ns文件顶部的表单
  • 进行二分搜索,直到找到触发它的一两个
  • 仅在废品项目中加载该依赖项。
  • ...很多努力...
  • 成功 !
于 2018-12-05T17:54:20.837 回答