You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

IntelliJ IDEA 2023.1.2中Minecraft插件主类ClassNotFoundException解决方法

Minecraft插件加载ClassNotFoundException问题排查

问题背景

我在为个人服务器开发Minecraft插件,将IntelliJ IDEA更新至2023.1.2社区版后,自动补全与错误检测功能失效,错误代码仍能完成构建。通过将项目结构中的src文件夹设置为源文件夹解决了IDE功能问题,但现在加载插件时出现ClassNotFoundException,提示找不到主类fr.byxis.main.Main。已确认PlugMan插件不是问题根源,推测问题与文件夹的源目录设置有关,尝试调整源文件夹后仍未解决。

错误日志

22:26:09] [Server thread/ERROR]: [ModernPluginLoadingStrategy] Could not load plugin 'Fireland.jar' in folder 'plugins'
org.bukkit.plugin.InvalidPluginException: Cannot find main class `fr.byxis.main.Main'
    at org.bukkit.plugin.java.PluginClassLoader.<init>(PluginClassLoader.java:78) ~[paper-api-1.19.4-R0.1-SNAPSHOT.jar:?]
    at io.papermc.paper.plugin.provider.type.spigot.SpigotPluginProvider.createInstance(SpigotPluginProvider.java:123) ~[paper-1.19.4.jar:git-Paper-522]
    at io.papermc.paper.plugin.provider.type.spigot.SpigotPluginProvider.createInstance(SpigotPluginProvider.java:35) ~[paper-1.19.4.jar:git-Paper-522]
    at io.papermc.paper.plugin.entrypoint.strategy.modern.ModernPluginLoadingStrategy.loadProviders(ModernPluginLoadingStrategy.java:116) ~[paper-1.19.4.jar:git-Paper-522]
    at io.papermc.paper.plugin.storage.SimpleProviderStorage.enter(SimpleProviderStorage.java:39) ~[paper-1.19.4.jar:git-Paper-522]
    at io.papermc.paper.plugin.manager.SingularRuntimePluginProviderStorage.enter(SingularRuntimePluginProviderStorage.java:57) ~[paper-1.19.4.jar:git-Paper-522]
    at io.papermc.paper.plugin.manager.RuntimePluginEntrypointHandler.enter(RuntimePluginEntrypointHandler.java:40) ~[paper-1.19.4.jar:git-Paper-522]
    at io.papermc.paper.plugin.manager.PaperPluginInstanceManager.loadPlugin(PaperPluginInstanceManager.java:118) ~[paper-1.19.4.jar:git-Paper-522]
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[?:?]
    at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
    at java.lang.reflect.Method.invoke(Method.java:568) ~[?:?]
    at com.rylinaux.plugman.util.PaperPluginUtil.load(PaperPluginUtil.java:407) ~[PlugManX.jar:?]
    at com.rylinaux.plugman.util.PaperPluginUtil.load(PaperPluginUtil.java:364) ~[PlugManX.jar:?]
    at com.rylinaux.plugman.util.PaperPluginUtil.reload(PaperPluginUtil.java:509) ~[PlugManX.jar:?]
    at com.rylinaux.plugman.command.ReloadCommand.execute(ReloadCommand.java:125) ~[PlugManX.jar:?]
    at com.rylinaux.plugman.PlugManCommandHandler.onCommand(PlugManCommandHandler.java:97) ~[PlugManX.jar:?]
    at org.bukkit.command.PluginCommand.execute(PluginCommand.java:45) ~[paper-api-1.19.4-R0.1-SNAPSHOT.jar:?]
    at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:155) ~[paper-api-1.19.4-R0.1-SNAPSHOT.jar:?]
    at org.bukkit.craftbukkit.v1_19_R3.CraftServer.dispatchCommand(CraftServer.java:906) ~[paper-1.19.4.jar:git-Paper-522]
    at org.bukkit.craftbukkit.v1_19_R3.command.BukkitCommandWrapper.run(BukkitCommandWrapper.java:64) ~[paper-1.19.4.jar:git-Paper-522]
    at com.mojang.brigadier.CommandDispatcher.execute(CommandDispatcher.java:264) ~[paper-1.19.4.jar:?]
    at net.minecraft.commands.Commands.performCommand(Commands.java:322) ~[?:?]
    at net.minecraft.commands.Commands.performCommand(Commands.java:306) ~[?:?]
    at net.minecraft.server.network.ServerGamePacketListenerImpl.performChatCommand(ServerGamePacketListenerImpl.java:2290) ~[?:?]
    at net.minecraft.server.network.ServerGamePacketListenerImpl.lambda$handleChatCommand$20(ServerGamePacketListenerImpl.java:2250) ~[?:?]
    at net.minecraft.util.thread.BlockableEventLoop.lambda$submitAsync$0(BlockableEventLoop.java:59) ~[?:?]
    at java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1768) ~[?:?]
    at net.minecraft.server.TickTask.run(TickTask.java:18) ~[paper-1.19.4.jar:git-Paper-522]
    at net.minecraft.util.thread.BlockableEventLoop.doRunTask(BlockableEventLoop.java:153) ~[?:?]
    at net.minecraft.util.thread.ReentrantBlockableEventLoop.doRunTask(ReentrantBlockableEventLoop.java:24) ~[?:?]
    at net.minecraft.server.MinecraftServer.doRunTask(MinecraftServer.java:1342) ~[paper-1.19.4.jar:git-Paper-522]
    at net.minecraft.server.MinecraftServer.d(MinecraftServer.java:197) ~[paper-1.19.4.jar:git-Paper-522]
    at net.minecraft.util.thread.BlockableEventLoop.pollTask(BlockableEventLoop.java:126) ~[?:?]
    at net.minecraft.server.MinecraftServer.pollTaskInternal(MinecraftServer.java:1319) ~[paper-1.19.4.jar:git-Paper-522]
    at net.minecraft.server.MinecraftServer.pollTask(MinecraftServer.java:1312) ~[paper-1.19.4.jar:git-Paper-522]
    at net.minecraft.util.thread.BlockableEventLoop.managedBlock(BlockableEventLoop.java:136) ~[?:?]
    at net.minecraft.server.MinecraftServer.waitUntilNextTick(MinecraftServer.java:1290) ~[paper-1.19.4.jar:git-Paper-522]
    at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1178) ~[paper-1.19.4.jar:git-Paper-522]
    at net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:320) ~[paper-1.19.4.jar:git-Paper-522]
    at java.lang.Thread.run(Thread.java:833) ~[?:?]
Caused by: java.lang.ClassNotFoundException: fr.byxis.main.Main
    at org.bukkit.plugin.java.PluginClassLoader.loadClass0(PluginClassLoader.java:183) ~[paper-api-1.19.4-R0.1-SNAPSHOT.jar:?]
    at org.bukkit.plugin.java.PluginClassLoader.loadClass(PluginClassLoader.java:150) ~[paper-api-1.19.4-R0.1-SNAPSHOT.jar:?]
    at java.lang.ClassLoader.loadClass(ClassLoader.java:520) ~[?:?]
    at java.lang.Class.forName0(Native Method) ~[?:?]
    at java.lang.Class.forName(Class.java:467) ~[?:?]
    at org.bukkit.plugin.java.PluginClassLoader.<init>(PluginClassLoader.java:76) ~[paper-api-1.19.4-R0.1-SNAPSHOT.jar:?]
    ... 40 more

plugin.yml配置

name: Fireland
version: 3.0
author: Byxis
main: fr.byxis.main.Main
api-version: 1.19
...

排查与解决建议

  • 验证类路径与文件结构:检查项目中Main类的实际路径是否为src/fr/byxis/main/Main.java,确保包名和类名完全匹配plugin.yml中的fr.byxis.main.Main,注意Java对大小写敏感。
  • 检查编译输出目录:在IntelliJ IDEA的项目结构(File > Project Structure)中,确认Project Settings > Modules下的Paths里,编译输出的Output directory和Test output directory是否正确(通常为out/production/[模块名]或target/classes)。构建后查看输出目录中是否存在fr/byxis/main/Main.class文件。
  • 确认构建工具配置:如果使用Maven或Gradle,检查构建脚本是否正确标记源目录:
    • Maven pom.xml示例:
      <build>
          <sourceDirectory>src/main/java</sourceDirectory>
          <resources>
              <resource>
                  <directory>src/main/resources</directory>
                  <includes>
                      <include>plugin.yml</include>
                  </includes>
              </resource>
          </resources>
      </build>
      
    • Gradle build.gradle示例:
      sourceSets {
          main {
              java {
                  srcDirs = ['src/main/java']
              }
              resources {
                  srcDirs = ['src/main/resources']
              }
          }
      }
      
  • 重新构建项目:执行Build > Rebuild Project,确保所有类都被正确编译,再重新打包插件。
  • 检查插件包内容:解压生成的Fireland.jar,确认内部包含fr/byxis/main/Main.class文件,且plugin.yml位于jar根目录下。

内容的提问来源于stack exchange,提问作者Byxis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 12:29:59