如何通过Bukkit / Spigot插件和Gradle使用Kotlin

时间:2019-06-03 20:40:04

标签: java gradle kotlin bukkit

我正在尝试将Kotlin用于Spigot插件(针对1.8.8版),因为我发现Kotlin的使用效率更高。但是,每当我尝试运行插件时,都会出现此错误:

Caused by: java.lang.ClassNotFoundException: kotlin.jvm.internal.Intrinsics

我已经看过网上了,看来我需要将Kotlin jar文件着色到我的插件中,有人可以建议我该怎么做吗?

更新在尝试了下面的建议之后,我仍然遇到相同的错误。 这是我的build.gradle:

plugins {
    id 'java'
    id 'org.jetbrains.kotlin.jvm' version '1.3.31'
    id 'com.github.johnrengelman.shadow' version '4.0.2'
}

group 'me.graphicalcake95'
version '1.0.0'

sourceCompatibility = 1.8

repositories {
    mavenCentral()
    maven {
        url 'https://hub.spigotmc.org/nexus/content/repositories/snapshots/'
    }
}

shadowJar {
    baseName = 'shadow'
    classifier = null
    version = null
}

dependencies {
    testCompile group: 'junit', name: 'junit', version: '4.12'
    compileOnly 'org.bukkit:bukkit:1.8.8-R0.1-SNAPSHOT'
    shadow "org.jetbrains.kotlin:kotlin-stdlib-jdk8"
}
compileKotlin {
    kotlinOptions {
        jvmTarget = "1.8"
    }
}
compileTestKotlin {
    kotlinOptions {
        jvmTarget = "1.8"
    }
}

1 个答案:

答案 0 :(得分:0)

您确实需要将Kotlin标准库隐藏到插件中。由于您正在使用Gradle,因此可以通过使用Shadow Plugin来实现此目的,该方法类似于 Shade ,但是Shade仅用于 Maven ,因此对于你。

使用Shadow插件非常简单。首先,您自己应用插件:

plugins {
  id 'com.github.johnrengelman.shadow' version '5.0.0'
}

然后您可以配置Shadow:

shadowJar {
   baseName = 'shadow'
   classifier = null
   version = null
}

这将在您构建项目时在您的构建文件夹中创建一个shadow.jar。应用完影子插件后,您可以shadow依赖项将包含在胖子中:

dependencies {
  shadow "org.jetbrains.kotlin:kotlin-stdlib:$kotlinVersion"
}