Ktor — я сгенерировал новый проект, чтобы попробовать немного, но не могу импортировать CIO engine

#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 с использованием метаданных. Иногда это не работает из-за более старых версий