ClassNotFoundException:kotlin.jvm.internal.Intrinsics

问题描述 投票:0回答:1

我目前正在为 Spigot 1.8.8 开发 Minecraft OITC 插件! ~全部使用 IntelliJ 以 Kotlin 编写

虽然从 ItemDrops 的简单事件处理程序开始,但我遇到了一个问题:

Could not pass event PlayerDropItemEvent to RarityOITC v1.0-SNAPSHOT
 Caused by: java.lang.ClassNotFoundException: kotlin.jvm.internal.Intrinsics

一段时间后我认为我的代码可能没问题:

我的主课:

package me.ysheiny.rarityoitc

import me.ysheiny.rarityoitc.handlers.PlayerHandler
import org.bukkit.plugin.java.JavaPlugin

class RarityOITC : JavaPlugin() {

    val prefix = "[&bRarity&dOITC&f]"
    override fun onEnable() {
        // Plugin startup logic
        logger.info("Plugin Enabled!")

        PlayerHandler(this)
    }

    override fun onDisable() {
        // Plugin shutdown logic
        logger.info("Plugin Disabled!")
    }
}

我的播放器处理程序:

package me.ysheiny.rarityoitc.handlers

import me.ysheiny.rarityoitc.RarityOITC
import org.bukkit.Bukkit
import org.bukkit.event.EventHandler
import org.bukkit.event.Listener
import org.bukkit.event.player.PlayerDropItemEvent

class PlayerHandler(plugin: RarityOITC?) : Listener {
    init {
        Bukkit.getPluginManager().registerEvents(this, plugin)
    }

    @EventHandler
    fun onPlayerDropItem(event: PlayerDropItemEvent)
    {
        event.isCancelled = true
    }
}

我做了一些研究,发现构建 Kotlin 运行时存在异常。 我的项目是用 Maven 构建的,这些是我的依赖项:

<dependencies>
        <dependency>
            <groupId>com.sample</groupId>
            <artifactId>sample</artifactId>
            <version>1.0</version>
            <scope>system</scope>
            <systemPath>${project.basedir}/src/main/resources/spigot-1.8.8.jar</systemPath>
        </dependency>
        <dependency>
            <groupId>org.jetbrains.kotlin</groupId>
            <artifactId>kotlin-stdlib-jdk8</artifactId>
            <version>${kotlin.version}</version>
        </dependency>
        <dependency>
            <groupId>org.jetbrains.kotlin</groupId>
            <artifactId>kotlin-runtime</artifactId>
            <version>1.2.71</version>
            <scope>system</scope>
            <systemPath>${project.basedir}/src/main/resources/kotlin-runtime-1.2.71.jar</systemPath>
        </dependency>
        <dependency>
            <groupId>org.jetbrains.kotlin</groupId>
            <artifactId>kotlin-test</artifactId>
            <version>${kotlin.version}</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

因为旧版本,我使用 1.8.8 的本地 spigot 依赖项。 否则我也一直在尝试手动添加 Kotlin 运行时,但版本太旧了:

Kotlin: API version 1.2 is no longer supported; please, use version 1.3 or greater.

我不知道该怎么办。 有人可以帮我解决这个问题吗?

maven kotlin intellij-idea minecraft spigot
1个回答
0
投票

我以某种方式找到了解决方案!

好吧,问题是:我想我只是忘记更新控制在 jar 中构建依赖项的 Artifact。所以信息在 pom.xml 中,但没有应用于实际构建。

所以对于像我这样有问题的每个人。搜索解决方案并始终记得更新项目结构中的工件。

我的依赖项现在看起来像这样:

        <dependency>
            <groupId>com.sample</groupId>
            <artifactId>sample</artifactId>
            <version>1.0</version>
            <scope>system</scope>
            <systemPath>${project.basedir}/src/main/resources/spigot-1.8.8.jar</systemPath>
        </dependency>
        <dependency>
            <groupId>org.jetbrains.kotlin</groupId>
            <artifactId>kotlin-stdlib</artifactId>
            <version>${kotlin.version}</version>
        </dependency>
        <dependency>
            <groupId>org.jetbrains.kotlin</groupId>
            <artifactId>kotlin-test</artifactId>
            <version>${kotlin.version}</version>
            <scope>test</scope>
        </dependency>

我认为

kotlin-runtime
不是真正的问题。只需按照
Tenfour04
的推荐将
kotlin-stdlib-jdk8
更改为kotlin-stdlib

© www.soinside.com 2019 - 2024. All rights reserved.