NichtStudioCode/InvUI

ClassNotFoundException in PaperMC 1.19.4

Closed this issue · 3 comments

I encountered the following errors.

[09:35:15 WARN]: java.lang.ClassNotFoundException: xyz.xenondevs.inventoryaccess.r13.InventoryUtilsImpl
[09:35:15 WARN]: 	at org.bukkit.plugin.java.PluginClassLoader.loadClass0(PluginClassLoader.java:183)
[09:35:15 WARN]: 	at org.bukkit.plugin.java.PluginClassLoader.loadClass(PluginClassLoader.java:150)
[09:35:15 WARN]: 	at java.base/java.lang.ClassLoader.loadClass(Unknown Source)
[09:35:15 WARN]: 	at java.base/java.lang.Class.forName0(Native Method)
[09:35:15 WARN]: 	at java.base/java.lang.Class.forName(Unknown Source)
[09:35:15 WARN]: 	at DepositVault.jar//xyz.xenondevs.inventoryaccess.util.ReflectionUtils.getImplClass(ReflectionUtils.java:28)
[09:35:15 WARN]: 	at DepositVault.jar//xyz.xenondevs.inventoryaccess.InventoryAccess.<clinit>(InventoryAccess.java:20)
[09:35:15 WARN]: 	at DepositVault.jar//xyz.xenondevs.invui.window.AbstractWindow.openInventory(AbstractWindow.java:306)
[09:35:15 WARN]: 	at DepositVault.jar//xyz.xenondevs.invui.window.AbstractWindow.open(AbstractWindow.java:302)
[09:35:15 WARN]: 	at DepositVault.jar//com.skuralll.depositvault.ui.GUI.open(GUI.java:31)
[09:35:15 WARN]: 	at DepositVault.jar//com.skuralll.depositvault.listener.PlayerEventListener.onPlayerInteract(PlayerEventListener.java:113)
[09:35:15 WARN]: 	at com.destroystokyo.paper.event.executor.asm.generated.GeneratedEventExecutor29.execute(Unknown Source)
[09:35:15 WARN]: 	at org.bukkit.plugin.EventExecutor$2.execute(EventExecutor.java:77)
[09:35:15 WARN]: 	at co.aikar.timings.TimedEventExecutor.execute(TimedEventExecutor.java:81)
[09:35:15 WARN]: 	at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:70)
[09:35:15 WARN]: 	at io.papermc.paper.plugin.manager.PaperEventManager.callEvent(PaperEventManager.java:54)
[09:35:15 WARN]: 	at io.papermc.paper.plugin.manager.PaperPluginManagerImpl.callEvent(PaperPluginManagerImpl.java:126)
[09:35:15 WARN]: 	at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:615)
[09:35:15 WARN]: 	at org.bukkit.craftbukkit.v1_19_R3.event.CraftEventFactory.callPlayerInteractEvent(CraftEventFactory.java:562)
[09:35:15 WARN]: 	at net.minecraft.server.level.PlayerInteractManager.a(PlayerInteractManager.java:536)
[09:35:15 WARN]: 	at net.minecraft.server.network.PlayerConnection.a(PlayerConnection.java:1958)
[09:35:15 WARN]: 	at net.minecraft.network.protocol.game.PacketPlayInUseItem.a(PacketPlayInUseItem.java:37)
[09:35:15 WARN]: 	at net.minecraft.network.protocol.game.PacketPlayInUseItem.a(PacketPlayInUseItem.java:9)
[09:35:15 WARN]: 	at net.minecraft.network.protocol.PlayerConnectionUtils.lambda$ensureRunningOnSameThread$0(PlayerConnectionUtils.java:51)
[09:35:15 WARN]: 	at net.minecraft.server.TickTask.run(TickTask.java:18)
[09:35:15 WARN]: 	at net.minecraft.util.thread.IAsyncTaskHandler.d(IAsyncTaskHandler.java:153)
[09:35:15 WARN]: 	at net.minecraft.util.thread.IAsyncTaskHandlerReentrant.d(IAsyncTaskHandlerReentrant.java:24)
[09:35:15 WARN]: 	at net.minecraft.server.MinecraftServer.b(MinecraftServer.java:1342)
[09:35:15 WARN]: 	at net.minecraft.server.MinecraftServer.d(MinecraftServer.java:197)
[09:35:15 WARN]: 	at net.minecraft.util.thread.IAsyncTaskHandler.x(IAsyncTaskHandler.java:126)
[09:35:15 WARN]: 	at net.minecraft.server.MinecraftServer.bi(MinecraftServer.java:1319)
[09:35:15 WARN]: 	at net.minecraft.server.MinecraftServer.x(MinecraftServer.java:1312)
[09:35:15 WARN]: 	at net.minecraft.util.thread.IAsyncTaskHandler.c(IAsyncTaskHandler.java:136)
[09:35:15 WARN]: 	at net.minecraft.server.MinecraftServer.i_(MinecraftServer.java:1290)
[09:35:15 WARN]: 	at net.minecraft.server.MinecraftServer.w(MinecraftServer.java:1178)
[09:35:15 WARN]: 	at net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:320)
[09:35:15 WARN]: 	at java.base/java.lang.Thread.run(Unknown Source)

I use Java to create my plugins and have written gradle as per the documentation.
No error is output at compile time, but the above error is output when actually trying to open the UI in the server.

My server's version is Paper version git-Paper-509 (MC: 1.19.4) (Implementing API version 1.19.4-R0.1-SNAPSHOT) (Git: e338793)

Thank you for your help

A ClassNotFoundException means that the class loader cannot find a class.

This is most likely caused by you not adding InvUI's classes to the classpath (either through some sort of library loading mechanism or by creating a fat jar using maven shade or gradle shadow)

Thanks for the reply.
I have already created a fat jar using the shadow plugin, do I need to add anything further to the build.gradle?
The current build.gradle is as follows.
The shadowJar task is used to generate the Jar.

plugins {
    id 'java'
    id "com.github.johnrengelman.shadow" version "7.1.2"
}

group = 'com.skuralll'
version = '1.0'

repositories {
    mavenCentral()
    maven {
        name = "papermc-repo"
        url = "https://repo.papermc.io/repository/maven-public/"
    }
    maven {
        name = "sonatype"
        url = "https://oss.sonatype.org/content/groups/public/"
    }
    maven { url 'https://jitpack.io' }
    maven { url 'https://repo.xenondevs.xyz/releases' }
}

dependencies {
    compileOnly "io.papermc.paper:paper-api:1.19.4-R0.1-SNAPSHOT"
    compileOnly "com.github.MilkBowl:VaultAPI:1.7"
    implementation "xyz.xenondevs.invui:invui:1.0"
}

def targetJavaVersion = 17
java {
    def javaVersion = JavaVersion.toVersion(targetJavaVersion)
    sourceCompatibility = javaVersion
    targetCompatibility = javaVersion
    if (JavaVersion.current() < javaVersion) {
        toolchain.languageVersion = JavaLanguageVersion.of(targetJavaVersion)
    }
}

tasks.withType(JavaCompile).configureEach {
    if (targetJavaVersion >= 10 || JavaVersion.current().isJava10Compatible()) {
        options.release = targetJavaVersion
    }
}

processResources {
    def props = [version: version]
    inputs.properties props
    filteringCharset 'UTF-8'
    filesMatching('plugin.yml') {
        expand props
    }
}

shadowJar {
    archiveName("DepositVault.jar")
    minimize()
}

Sorry, self-resolved.
I removed minimize() in the shadowJar task and it works fine.
Thank you very much.