対象読者
graldeで以下のようなエラー(XXXXXXXXの部分は16進数)に遭遇し、理由はともかく手っ取り早く解決(する可能性のある体験談)を求めている人。
java.lang.IllegalArgumentException: org.gradle.api.internal.initialization.DefaultClassLoaderScope@XXXXXXXX must be locked before it can be used to compute a classpath!
環境
- IntelliJ IDEA 2022.2.1 (Community Edition)
- gradle 7.4.2
- build.gradle.kts
- Koltin 1.6.21
対応
調べると出てくるのは、gradle.properties内のconfigureondemandをFalseにする方法だが、これで解決しなかった人は以下の観点で検討してはどうだろう。
build.gradle.kts
でビルドするクラスをbuild.gradle.kts
自身でインポートしたり依存対象にしたりしていないだろうか。深く検証していないが、コンパイルして生成する予定のクラスをdependencies
に含めようとすると、たとえそれがbuild.gradle.kts
でビルドするファイルと別のソースから提供されるものであっても表題のエラーが出るっぽい。
build.gradle.kts
での生成の対象から外したらエラーが表示されなくなった(※個人の体験です)。
浅い考察
冷静に考えれば自己へのループ構造になるので、通常はこんなことにはならないはずなのだが、gradleのプラグインの作成と使用をサブプロジェクトを用いて同一プロジェクト内で済ませようとしたらハマってしまった。
gradleの動作に詳しい人には当然なのかもしれないが、何がlocked
なのかわからず何時間か費やしたので、(そんなにはいないとは思うが)犠牲者が少しでも減ればと書いた。