Java 如何调试project.clj以查找哪个依赖项破坏了我的项目编译
我刚刚将我的系统从Java8更新为OpenJDKJava11版本。我有一个无法编译的项目,出现以下错误:Java 如何调试project.clj以查找哪个依赖项破坏了我的项目编译,java,clojure,java-11,redhat-openjdk,Java,Clojure,Java 11,Redhat Openjdk,我刚刚将我的系统从Java8更新为OpenJDKJava11版本。我有一个无法编译的项目,出现以下错误: Java.lang.IllegalArgumentException: Must hint overloaded method: toArray, compiling:(flatland/ordered/set.clj:19:1) Exception in thread "main" java.lang.IllegalArgumentException: Must hint overlo
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)
从外观上看,此错误已在此处修复:
因此,我将我的项目更新为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是否引入依赖项/库,然后从my project.clj中包含的库中引用所需的依赖项
编辑***
我发现这很可能是错误
你已经有了答案,不过我想我还是把我的一般流程留到这里,以防它对后来的人有用:
- 在我的工具中打开任何自动AOT,这样我就可以在不触发问题的情况下得到一个repl
- 一次加载一个名称空间,直到找到触发问题的名称空间为止(这通常不需要很长时间;-)
- 注释掉该名称空间的一半依赖项,并计算文件顶部的
表单ns
- 进行二进制搜索,直到找到触发它的一个或两个
- 在废弃项目中仅加载该依赖项
- 。。。很多努力
- 成功李>
sudo-update-alternations--config-java
返回到版本8。