以下Kotlin库的每种用法都可以编译并使用,但是IntelliJ的自动完成功能(可能还有其他功能)无法解析引用。
https://gitlab.com/7Hazard/altv-kotlin
我通过JitPack将其用作依赖项:https://jitpack.io/#com.gitlab.7Hazard/altv-kotlin
JDK 11,Gradle 6.3(包装器)
gradle项目构建良好,但是自动补全被破坏了。像kotlinx.coroutines这样的其他依赖项也可以正常工作。
它altv-kotlin
是一个胖子,甚至包括jar中的源代码:https://gitlab.com/7Hazard/altv-kotlin/-/blob/master/build.gradle#L53
反过来,它使用了Java依赖项,因此altv-kotlin
使用了一些Java,如果有区别,则最后的fatjar包括Kotlin和Java源。
可能是由于某种原因未将源正确放置在JAR中吗?我什至无法得到IDEA来反编译自动完成的引用。我有一种强烈的感觉,这是一个与altv-kotlin
库特别相关的问题,而不是我的任何环境设置。
我试图删除.idea文件夹,使缓存无效/重新启动,为IDEA和gradle项目更新Kotlin插件,甚至从2018年更新到2020年,但都无济于事。
我也尝试了以下答案,但没有解决问题:
https://stackoverflow.com/a/56619181/8122837
https://stackoverflow.com/a/5905931/8122837
我还注意到有关Kotlin Runtime与库 bundle 在一起的警告,但是即使没有将其 bundle 在其中,IDEA也会抱怨。
最佳答案
因此,在本地,我似乎已经通过重新创建项目并将源复制到其中来解决了该问题。似乎有效,为什么我不知道。
但是,当使用来自JitPack的远程依赖项时,因为我将JAR中的所有类文件都包括在内,所以它是一个胖子。
jar {
from configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it)
}
自从我从
jar
任务中删除该行以来,IntelliJ IDEA便能够正常解析引用。