Spigot插件Maven构建失败:无法访问AdvancementDisplayType
核对Maven核心配置细节
先确保maven-compiler-plugin配置完全对齐Java 8,不仅要设置source和target版本,还要选用兼容Java 8的稳定插件版本:<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.1</version> <!-- 该版本对Java 8支持稳定 --> <configuration> <source>1.8</source> <target>1.8</target> <encoding>UTF-8</encoding> <!-- 避免字符编码异常导致的编译失败 --> </configuration> </plugin>同时检查Spigot依赖的坐标与仓库配置是否匹配当前开发的服务器版本,例如适配1.12.2版本的配置:
<repositories> <repository> <id>spigotmc-repo</id> <url>https://hub.spigotmc.org/nexus/content/repositories/snapshots/</url> </repository> </repositories> <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 install -U,其中-U参数会强制更新所有依赖快照,避免本地缓存的依赖文件损坏或版本不匹配。如果问题依旧,手动删除本地Maven仓库中Spigot相关目录(如~/.m2/repository/org/spigotmc),再重新拉取依赖执行构建。排查新增代码的隐性依赖问题
即使同步适配了Java 8,新增代码可能用到了当前Spigot依赖版本未提供的API。比如依赖1.12.2版本Spigot时,使用了1.16+才新增的Player#sendActionBar重载方法,会直接导致编译失败。可对照Spigot官方API文档,核对新增代码中的方法是否存在于指定的依赖版本中。检查Maven插件兼容性
如果pom.xml中使用了maven-shade-plugin等打包插件,需确认插件版本兼容Java 8——例如maven-shade-plugin建议使用3.2.4版本,高版本可能要求Java 11及以上。另外重点查看Maven输出的具体错误栈,定位最原始的错误信息(如package xxx does not exist或cannot access class xxx),这是快速定位问题的关键。
内容的提问来源于stack exchange,提问作者Sus Amongus

