#java #kotlin #gradle #intellij-idea
Вопрос:
Итак, я переписываю некоторые из своих проектов с Java на Kotlin, потому что в целом мне более комфортно с языком, и я наткнулся на небольшую проблему с моей IDE (InteliJ IDEA Ultimate).
Я опубликовал одну из своих библиотек в публичном репозитории на GitHub и использовал ее в качестве зависимости в другом проекте, используя Gradle и JitPack, она загружается и включена во «Внешние библиотеки».
Однако я не могу использовать что-либо из этого в своих файлах .kt. (IDE показывает ошибку «Неразрешенная ссылка».) https://i.stack.imgur.com/qFDWN.png
Этого не происходит, когда я пытаюсь сделать то же самое на Java. (Тот же проект) https://i.stack.imgur.com/NV22F.png
build.gradle.kts
repositories {
mavenCentral()
maven {
name = "papermc-repo"
url = uri("https://papermc.io/repo/repository/maven-public/")
}
maven {
name = "jitpack"
url = uri("https://www.jitpack.io")
}
}
dependencies {
testImplementation(kotlin("test-junit"))
implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
compileOnly("com.destroystokyo.paper:paper-api:1.16.5-R0.1-SNAPSHOT")
implementation("com.github.ThePlay3r:PLJRApi-Spigot:563362408c")
}
Это довольно неприятно, так как я был действительно взволнован Котлином, но это делает меня неспособным многое сделать.
У кого-нибудь есть идеи, как это исправить, или какая-либо альтернатива для добавления библиотек в мой проект?
Комментарии:
1. Я уже сталкивался с подобными проблемами раньше. Проверьте и убедитесь, что оба проекта были скомпилированы с одной и той же версией Java. Также обратите внимание: вам не нужно использовать функцию Kotlin Gradle (
build.gradle.kts
) для проектов с поддержкой Kotlin; обычной функции Gradle (build.gradle
) также будет достаточно, как только вы добавите плагин Kotlin вверху.
Ответ №1:
По-видимому, это известная проблема, о которой сообщалось и которая отслеживается здесь: https://youtrack.jetbrains.com/issue/KT-25709.
Мое текущее временное исправление исключает некоторые файлы kotlin из shadowJar
задачи.
tasks.named<ShadowJar>("shadowJar") {
exclude("**/*.kotlin_metadata")
exclude("**/*.kotlin_module")
exclude("**/*.kotlin_builtins")
}