Как отладить project.clj, чтобы узнать, какая зависимость нарушает компиляцию моего проекта

Я только что обновил свою систему с 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, чтобы показать мне, какая зависимость в моем проекте не работает во время компиляции (может быть несколько)?

Я также заметил, что скопировал список зависимостей, который не удался в моем первом проекте, в новый проект, и новый проект был скомпилирован. Однако я не ссылался на зависимости или вызовы функций из списка зависимостей. Включает ли Clojure зависимости / библиотеки, а затем ссылается на необходимые зависимости из библиотек, включенных в мой project.clj?

РЕДАКТИРОВАТЬ *** Я обнаружил, что это, скорее всего, ошибка.

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


person Michael Thurmond    schedule 04.12.2018    source источник
comment
У меня была такая же ошибка, но я не понял, что проблема была вызвана обновлением Java до версии 11. Мне не удалось обновить версию зависимости, поэтому я просто вернулся к версии 8 с sudo update-alternatives --config java.   -  person Jp_    schedule 03.06.2019


Ответы (1)


У вас уже есть ответ, хотя я подумал, что оставлю свой общий процесс на этот случай, если он будет полезен людям, которые придут позже:

  • Включите любой автоматический AOT в моем инструменте, чтобы я мог получить ответ, не вызывая проблемы.
  • загружать пространства имен по одному, пока я не найду то, которое вызывает проблему (обычно это не занимает много времени ;-)
  • закомментируйте половину зависимостей этого пространства имен и оцените форму ns в верхней части файла
  • выполните двоичный поиск, пока не найду один или два, которые запускают его
  • загрузить только эту зависимость в лом проекта.
  • ... много усилий ...
  • УСПЕХ !
person Arthur Ulfeldt    schedule 05.12.2018