Gradle project builds successfully but IntelliJ cannot resolve references

Tags: , , ,



Every usage of the following Kotlin library compiles and can be used, but IntelliJ’s autocomplete (and perhaps others) cannot resolve the references. https://gitlab.com/7Hazard/altv-kotlin

I am using it as a dependency via JitPack: https://jitpack.io/#com.gitlab.7Hazard/altv-kotlin
JDK 11, Gradle 6.3 (wrapper)

The gradle project builds fine but just autocompletion is broken. Other dependencies like kotlinx.coroutines work fine.

IntelliJ's linter error

It altv-kotlin is a fatjar and even includes the sources in the jar: https://gitlab.com/7Hazard/altv-kotlin/-/blob/master/build.gradle#L53
It in turn uses a java dependency, so altv-kotlin uses some Java and the end fatjar includes both Kotlin and Java sources if that makes a difference.

Could it be that the source are not being put in the JAR correctly for some reason? I couldn’t even get IDEA to decompile the references for autocompletion. I have a strong feeling this is an issue tied to altv-kotlin library specifically, and not any of my environment setup.

I’ve tried to delete the .idea folder, Invalidate Caches / Restart, update Kotlin plugin for both IDEA and gradle projects and even updated IDEA from 2018 to 2020 with no avail whatsoever. I tried these answers as well but did not solve the problem:
https://stackoverflow.com/a/56619181/8122837
https://stackoverflow.com/a/5905931/8122837
I also noticed the warning about Kotlin Runtime being bundled with the library, but even without it being bundled in it IDEA complains.

Answer

So, locally I seem to have resolved the issue by recreating the project and copying the sources into there. Seems to have worked, why I don’t know.
However, when using the remote dependency from JitPack, because I was including all the classfiles in the JAR to have it be a fatjar.

jar {
    from configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it)
}

Ever since I removed that line from the jar task, IntelliJ IDEA was able to resolve the references normally.



Source: stackoverflow