#kotlin #build.gradle #ktor
#kotlin #build.gradle #ktor
Вопрос:
Я пытаюсь использовать Ktor для проекта, но пример проекта, созданный плагином Ktor, не работает. Существует проблема с импортом CIO engine.
Когда я помещаю import io.ktor.client.engine.cio.*
, он говорит «Отменить решение ссылки: cio»
Вот мой build.gradle
:
buildscript {
ext.kotlin_version = '1.4.10'
ext.ktor_version = '1.4.0'
repositories {
jcenter()
}
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
apply plugin: 'kotlin'
apply plugin: 'application'
sourceCompatibility = 1.8
compileKotlin {
kotlinOptions.jvmTarget = "1.8"
}
compileTestKotlin {
kotlinOptions.jvmTarget = "1.8"
}
kotlin {
experimental {
coroutines "enable"
}
}
group 'com.archilog_rest'
version '0.0.1'
mainClassName = "io.ktor.server.tomcat.EngineMain"
sourceSets {
main.kotlin.srcDirs = main.java.srcDirs = ['src']
test.kotlin.srcDirs = test.java.srcDirs = ['test']
main.resources.srcDirs = ['resources']
test.resources.srcDirs = ['testresources']
}
repositories {
mavenLocal()
jcenter()
maven { url 'https://kotlin.bintray.com/kotlinx' }
}
dependencies {
println(ktor_version)
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
implementation "io.ktor:ktor-server-tomcat:$ktor_version"
implementation "ch.qos.logback:logback-classic:$logback_version"
implementation "io.ktor:ktor-server-core:$ktor_version"
implementation "io.ktor:ktor-server-sessions:$ktor_version"
implementation "io.ktor:ktor-client-core:$ktor_version"
implementation "io.ktor:ktor-client-core-jvm:$ktor_version"
implementation "io.ktor:ktor-client-cio:$ktor_version"
implementation "io.ktor:ktor-client-auth-jvm:$ktor_version"
implementation "io.ktor:ktor-client-json-jvm:$ktor_version"
implementation "io.ktor:ktor-client-gson:$ktor_version"
implementation "io.ktor:ktor-websockets:$ktor_version"
implementation "io.ktor:ktor-client-websockets:$ktor_version"
testImplementation "io.ktor:ktor-server-tests:$ktor_version"
}
Я действительно не понимаю, почему это идет не так, поскольку я почти ничего не сделал из образца…
Редактировать: посмотрев, как импортировать CIO, я заметил, что в моем build.gradle
implementation "io.ktor:ktor-client-cio:$ktor_version"
вместо:
implementation "io.ktor:ktor-client-cio-jvm:$ktor_version"
Довольно странно, но сейчас это работает
Комментарии:
1. Не могли бы вы создать свой проект с помощью ./ gradlew чистая сборка без внесения каких-либо новых изменений в исходный код?
2. Итак, вам нужно установить JDK «Gradle использует любой JDK, который он находит на вашем пути. Кроме того, вы можете установить переменную среды JAVA_HOME так, чтобы она указывала на каталог установки нужного JDK.» Вы можете найти инструкции здесь docs.oracle.com/javase/10/install/… Затем повторите попытку создания проекта
3. Компиляция завершилась неудачно из-за неразрешенной ссылки
4. Обычно gradle при необходимости использует проверку jvm с использованием метаданных. Иногда это не работает из-за более старых версий