【问题标题】:Unresolved reference "java" in Kotlin while using Gradle and IntelIJ使用 Gradle 和 IntellIJ 时 Kotlin 中未解决的引用“java”
【发布时间】:2018-11-21 10:47:24
【问题描述】:

我想使用 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 install 和 build 命令已成功完成。 任何帮助将不胜感激

【问题讨论】:

  • 错误是什么? import java.util 看起来也不对。
  • 可以分享示例项目示例吗?

标签: java gradle intellij-idea kotlin


【解决方案1】:

我可以推测原因可能如下:你没有在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

【讨论】:

    【解决方案2】:

    import 语句不完整。您可以导入整个 java.util 包,就像使用 org.telegram.* 一样:

    import java.util.*
    

    或者更好的是,只导入你需要的类,例如:

    import java.util.List
    

    如需完整参考,请参阅Kotlin documentation about packages and imports

    顺便说一句,让 IntelliJ 通过organizing the imports 为您提供帮助。

    【讨论】:

    • 我知道,但无论如何它显示相同的错误
    猜你喜欢
    • 1970-01-01
    • 2018-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-25
    • 2015-10-21
    • 2018-07-24
    • 2020-03-09
    相关资源
    最近更新 更多