Неразрешенная ссылка "java" в Kotlin при использовании Gradle и IntelIJ - PullRequest
0 голосов
/ 12 июня 2018

Я хотел создать простого бота для телеграмм, используя kotlin и gradle.Я успешно импортировал библиотеку ort.telegram, но она не может разрешить стандартные библиотеки Java.Ниже приведена конфигурация gradle.build:

/*
 * This file was generated by the Gradle 'init' task.
 *
 * This is a general purpose Gradle build.
 * Learn how to create Gradle builds at https://guides.gradle.org/creating-new-gradle-builds/
 */

buildscript {
    ext.kotlin_version = '1.2.41'
    ext.telegramVersion = '3.5'

    repositories {
        maven { url "http://repo.maven.apache.org/maven2/" }
        mavenCentral()
    }

    dependencies {
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
       )
    }
}

apply plugin: "java-library"
apply plugin: "kotlin"
apply plugin: "java"


apply plugin: 'application'

mainClassName = 'main.Main'

repositories {
    maven { url "http://jcenter.bintray.com" }
}

dependencies {
    implementation 'org.hibernate:hibernate-core:3.6.7.Final'
    api 'com.google.guava:guava:23.0'
    testImplementation 'junit:junit:4.+'
    compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
    compile "org.telegram:telegrambots:3.6"

}


kotlin {
    experimental {
        coroutines "enable"
    }
}

compileKotlin {
    kotlinOptions {
        jvmTarget = "1.8"
    }
}
compileTestKotlin {
    kotlinOptions {
        jvmTarget = "1.8"
    }
}

Main.kt:

import org.telegram.*
import org.telegram.telegrambots.TelegramBotsApi
import org.telegram.telegrambots.api.objects.Update
import org.telegram.telegrambots.bots.TelegramLongPollingBot
import java.util.*

fun main(args : Array<String>) {
    println("Hello, world!")
}

Команды установки и сборки gradle успешно выполнены.Любая помощь будет оценена

Ответы [ 2 ]

0 голосов
/ 12 июня 2018

Могу предположить, что причина может быть в следующем: вы не указали пакет в Main.kt

package main // <--- based on your build.gradle file

import org.telegram.*
import org.telegram.telegrambots.TelegramBotsApi
import org.telegram.telegrambots.api.objects.Update
import org.telegram.telegrambots.bots.TelegramLongPollingBot
import java.util.*

fun main(args : Array<String>) {
    println("Hello, world!")
}

На всякий случай, в build.gradle файл для указания Main.kt в качестве основного класса, необходимо добавить суффикс Kt к имени класса:

mainClassName = "main.MainKt"

ОБНОВЛЕНИЕ : еще одной причиной может быть неправильная структура проекта.В вашем случае структура проекта должна быть следующей:

.
├── build.gradle
└── src
    └── main
        └── kotlin
            └── main
                └── Main.kt
0 голосов
/ 12 июня 2018

Оператор import является неполным.Вы можете импортировать весь пакет java.util, как вы делаете с org.telegram.*:

import java.util.*

Или, что еще лучше, импортировать только те классы, которые вам нужны, например:

import java.util.List

Для получения полной информации см. Документацию Kotlin о пакетах и ​​импорте .

В качестве дополнительного примечания позвольте IntelliJ помочь вам с помощью организации импорта .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...