I'm writing a new permissions plugin with plugin.yml:
name: ZAdminPermissions main: com.codespunk.zadmin.permission.plugin.bukkit.ZAdminPermissions depend: [ ZAdminLibUtil, ZAdminLibBukkit ]
It depends on ZAdminLibUtil:
name: ZAdminLibUtil main: com.codespunk.zadmin.lib.util.plugin.bukkit.ZAdminLibUtil depend: []
And ZAdminLibBukkit:
name: ZAdminLibBukkit main: com.codespunk.zadmin.lib.bukkit.plugin.bukkit.ZAdminLibBukkit depend: [ ZAdminLibUtil ]
The permissions plugin is trying to load before its dependencies. See that ZAdminLibUtil and ZAdminLibBukkit load successfully later in the log:
2020-12-28 22:52:41 [ERROR] Could not load 'plugins/ZAdminPermissions.jar' in folder 'plugins' org.bukkit.plugin.InvalidPluginException: java.lang.NoSuchMethodError: 'com.codespunk.zadmin.lib.bukkit.BukkitResource com.codespunk.zadmin.lib.bukki t.BukkitResource.load(com.codespunk.zadmin.lib.bukkit.BukkitPlugin, java.lang.String)' at org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.java:139) ~[spigot-1.16.4.jar:git-Spigot-a19903d-5b74714] at org.bukkit.plugin.SimplePluginManager.loadPlugin(SimplePluginManager.java:394) ~[spigot-1.16.4.jar:git-Spigot-a19903d-5b74714] at org.bukkit.plugin.SimplePluginManager.loadPlugins(SimplePluginManager.java:301) ~[spigot-1.16.4.jar:git-Spigot-a19903d-5b74714] at org.bukkit.craftbukkit.v1_16_R3.CraftServer.loadPlugins(CraftServer.java:383) ~[spigot-1.16.4.jar:git-Spigot-a19903d-5b74714] at net.minecraft.server.v1_16_R3.DedicatedServer.init(DedicatedServer.java:185) ~[spigot-1.16.4.jar:git-Spigot-a19903d-5b74714] at net.minecraft.server.v1_16_R3.MinecraftServer.w(MinecraftServer.java:809) ~[spigot-1.16.4.jar:git-Spigot-a19903d-5b74714] at net.minecraft.server.v1_16_R3.MinecraftServer.lambda$0(MinecraftServer.java:164) ~[spigot-1.16.4.jar:git-Spigot-a19903d-5b74714] at java.lang.Thread.run(Thread.java:832) [?:?] Caused by: java.lang.NoSuchMethodError: 'com.codespunk.zadmin.lib.bukkit.BukkitResource com.codespunk.zadmin.lib.bukkit.BukkitResource.load(com.codespunk.zadmin.lib.bukkit.BukkitPlugin, java.lang.String)' at com.codespunk.zadmin.permission.local.alias.Resource.load(Resource.java:42) ~[?:?] at com.codespunk.zadmin.permission.plugin.bukkit.ThisPlugin.<init>(ThisPlugin.java:36) ~[?:?] at com.codespunk.zadmin.permission.plugin.bukkit.ZAdminPermissions.<init>(ZAdminPermissions.java:14) ~[?:?] at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:?] at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:64) ~[?:?] at jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[?:?] at java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:500) ~[?:?] at java.lang.reflect.ReflectAccess.newInstance(ReflectAccess.java:128) ~[?:?] at jdk.internal.reflect.ReflectionFactory.newInstance(ReflectionFactory.java:350) ~[?:?] at java.lang.Class.newInstance(Class.java:645) ~[?:?] at org.bukkit.plugin.java.PluginClassLoader.<init>(PluginClassLoader.java:76) ~[spigot-1.16.4.jar:git-Spigot-a19903d-5b74714] at org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.java:135) ~[spigot-1.16.4.jar:git-Spigot-a19903d-5b74714] ... 7 more 2020-12-28 22:52:41 [INFO] [ZAdminLibUtil] Loading ZAdminLibUtil v1.0 2020-12-28 22:52:41 [INFO] [ZAdminLibBungeeCord] Loading ZAdminLibBungeeCord v1.0 2020-12-28 22:52:41 [INFO] [ZAdminLibBukkit] Loading ZAdminLibBukkit v1.0 2020-12-28 22:52:41 [INFO] [ZAdminHome] Loading ZAdminHome v1.0
I can confirm that Spigot is reading the contained plugin.yml because if I remove it I get a different error:
2020-12-29 01:42:59 [ERROR] Could not load 'plugins/ZAdminPermissions.jar' in folder 'plugins' org.bukkit.plugin.InvalidDescriptionException: Invalid plugin.yml at org.bukkit.plugin.java.JavaPluginLoader.getPluginDescription(JavaPluginLoader.java:160) ~[spigot-1.16.4.jar:git-Spigot-a19903d-5b74714] at org.bukkit.plugin.SimplePluginManager.loadPlugins(SimplePluginManager.java:144) ~[spigot-1.16.4.jar:git-Spigot-a19903d-5b74714] at org.bukkit.craftbukkit.v1_16_R3.CraftServer.loadPlugins(CraftServer.java:383) ~[spigot-1.16.4.jar:git-Spigot-a19903d-5b74714] at net.minecraft.server.v1_16_R3.DedicatedServer.init(DedicatedServer.java:185) ~[spigot-1.16.4.jar:git-Spigot-a19903d-5b74714] at net.minecraft.server.v1_16_R3.MinecraftServer.w(MinecraftServer.java:809) ~[spigot-1.16.4.jar:git-Spigot-a19903d-5b74714] at net.minecraft.server.v1_16_R3.MinecraftServer.lambda$0(MinecraftServer.java:164) ~[spigot-1.16.4.jar:git-Spigot-a19903d-5b74714] at java.lang.Thread.run(Thread.java:832) [?:?] Caused by: java.io.FileNotFoundException: Jar does not contain plugin.yml ... 7 more
Spigot appears to be calling the constructor and the static initializer prior to handling dependency resolution.
// This import is located in a dependency import com.codespunk.zadmin.lib.bukkit.Resource; public class Plugin extends JavaPlugin { private final Config _config; public Plugin() { // Resource is an class from another plugin Resource config = Resource.fromJar(this, "config.yml"); } }
I can't do this either.
// This import is located in a dependency import com.codespunk.zadmin.lib.bukkit.Resource; public class Plugin extends JavaPlugin { static { // Resource is an class from another plugin Resource config = Resource.fromJar(null, "config.yml"); } }
I've updated Spigot to the latest 1.16.4.