java - 使用Gradle和IntellIJ时Kotlin中未解析的引用 “java”

标签 java gradle intellij-idea kotlin

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

最佳答案

我可以假设原因可能如下:您没有在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

关于java - 使用Gradle和IntellIJ时Kotlin中未解析的引用 “java”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50810360/

相关文章:

java - 根据列值检索子类的集合

java - 独立的 Java 代码格式化程序/美化程序/ pretty-print ?

java - 构建并上传 jar 到 jcenter

gradle - 在特定项目中禁用 Gradle 守护进程

java - Spring Boot - 忽略属性 server.contextPath

java - 添加操作栏(Android 教程)

gradle - 如何防止Gradle检查/更新某些依赖项?

logging - IntelliJ 读取远程服务器日志文件

testing - 在 IntelliJ 中,我如何调试 Maven 测试目标?

java - 使用 Spring boot 运行集成测试 (NoSuchBeanDefinitionException)