gpt4 book ai didi

java - 如何调试 project.clj 以查找哪个依赖项破坏了我的项目编译

转载 作者:行者123 更新时间:2023-12-05 05:13:30 24 4
gpt4 key购买 nike

我刚刚将我的系统从 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

最佳答案

你已经有了答案,不过我想我会留下我的一般过程,因为它对后来出现的人有用:

  • 在我的工具中关闭任何自动 AOT,这样我就可以在不触发问题的情况下获得 repl。
  • 一次加载一个命名空间,直到我找到一个触发问题的命名空间(这通常不会花很长时间;-)
  • 注释掉该命名空间的一半依赖项并评估文件顶部的 ns 形式
  • 进行二分查找,直到找到触发它的一两个
  • 在报废项目中只加载该依赖项。
  • ...很多努力...
  • 成功!

关于java - 如何调试 project.clj 以查找哪个依赖项破坏了我的项目编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53622593/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com