Как использовать Kotlin с плагином Bukkit / Spigot и Gradle - PullRequest
0 голосов
/ 03 июня 2019

Я пытаюсь использовать Kotlin для плагина Spigot (для версии 1.8.8), так как я считаю, что Kotlin намного эффективнее в использовании.Но всякий раз, когда я пытаюсь запустить плагин, я получаю эту ошибку:

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

Я смотрел в Интернете, и мне кажется, мне нужно затенить файл jar Kotlin в мой плагин, может кто-нибудь посоветовать мне, как ябудет делать это?

ОБНОВЛЕНИЕ После попытки, что было предложено ниже, я все еще получаю ту же ошибку.Вот мой 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 голосов
/ 04 июня 2019

Вам действительно нужно затенять стандартную библиотеку 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"
}
...