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

使用Maven编译Spigot插件出现主类ClassNotFoundException问题咨询

问题原因及解决方案

Caused by: java.lang.ClassNotFoundException: plugin.Main
上述错误明确说明Spigot服务端无法从你编译的jar包中找到指定的主类,结合你提供的项目结构,根因及修复方法如下:

  • 不符合Maven默认源码目录规则
    Maven默认仅将src/main/java识别为Java源码目录,你当前将主类所在包放在src/main/plugin-package下,Maven编译阶段不会处理该路径下的Java文件,导致最终打包的jar包中没有你编写的任何类文件,自然找不到主类。
    修复方法二选一:
    1. (推荐)按照Maven标准目录结构调整,将你的业务代码包整体移动到src/main/java目录下
    2. 保持现有目录结构,在pom.xml的build节点中添加源码目录配置:
    <build>
        <sourceDirectory>src/main/plugin-package</sourceDirectory>
        <!-- 其余原有配置保留 -->
    </build>
    
  • 主类配置不匹配
    调整源码目录后,还要确认src/main/resources/plugin.yml中的main字段取值,和你的主类的完整包名+类名完全一致。例如你的主类文件第一行是package com.xxx.betterteaming;,类名为Main,那么plugin.yml中对应配置应为main: com.xxx.betterteaming.Main
  • 补充:要实现排除spigot-api依赖缩小体积的需求,只需在pom.xml中spigot-api依赖的配置添加<scope>provided</scope>即可,示例如下:
<dependencies>
    <dependency>
        <groupId>org.spigotmc</groupId>
        <artifactId>spigot-api</artifactId>
        <version>1.12.2-R0.1-SNAPSHOT</version>
        <scope>provided</scope>
    </dependency>
    <!-- 其余依赖配置保留 -->
</dependencies>

所有配置调整完成后,执行mvn clean package重新打包,将新生成的jar包放入服务器plugins目录即可正常加载。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 21:24:04