Вопрос Ошибка при операции cast к объекту зависимого плагина

wiselder

Пользователь
Сообщения
17
Решения
1
Есть мой основной плагин Nemesis. Он зависит от другого плагина Babylon. babylon наследуется от ITranslator. При кастинге последнего плагина к интерфейсу происходит следующая ошибка.


Bash:
[14:00:39 ERROR]: Error occurred while enabling Nemesis v0.0.1 (Is it up to date?)
java.lang.ClassCastException: class ru.wiselder.spigot.babylon.Babylon cannot be cast to class ru.wiselder.spigot.babylon.api.ITranslator (ru.wiselder.spigot.babylon.Babylon is in unnamed module of loader org.bukkit.plugin.java.PluginClassLoader @474b4367; ru.wiselder.spigot.babylon.api.ITranslator is in unnamed module of loader org.bukkit.plugin.java.PluginClassLoader @1681869a)
        at ru.wiselder.spigot.nemesis.Nemesis.beforeEnable(Nemesis.java:57) ~[?:?]
        at ru.wiselder.spigot.eternal.EternalPlugin.onEnable(EternalPlugin.java:61) ~[?:?]
        at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:263) ~[patched_1.17.jar:git-Paper-53]
        at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:370) ~[patched_1.17.jar:git-Paper-53]
        at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:500) ~[patched_1.17.jar:git-Paper-53]
        at org.bukkit.craftbukkit.v1_17_R1.CraftServer.enablePlugin(CraftServer.java:518) ~[patched_1.17.jar:git-Paper-53]
        at org.bukkit.craftbukkit.v1_17_R1.CraftServer.enablePlugins(CraftServer.java:432) ~[patched_1.17.jar:git-Paper-53]
        at net.minecraft.server.MinecraftServer.loadWorld(MinecraftServer.java:643) ~[patched_1.17.jar:git-Paper-53]
        at net.minecraft.server.dedicated.DedicatedServer.initServer(DedicatedServer.java:304) ~[patched_1.17.jar:git-Paper-53]
        at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1118) ~[patched_1.17.jar:git-Paper-53]
        at net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:320) ~[patched_1.17.jar:git-Paper-53]
Объединено

Java:
        var babylon = Bukkit.getPluginManager().getPlugin("Babylon");
        var janus = Bukkit.getPluginManager().getPlugin("Janus");

        if (babylon == null || janus == null) {
            super.fatality();
            return;
        }
        ITranslator translator = (ITranslator) babylon;
Объединено

Так, если устроить проверку полученного плагина через instanceof то он её проваливает.
Ядро Paper/Spigot 1.17, может быть дело в новых нестабильных версиях?

Поправлю первое сообщение - babylon не наследуется, а реализовывает интерфейс ITranslator.
До перехода на 1.17 и на новую джаву всё вроде как работало.
Очень надеюсь, что это мой косяк где-то завалялся, чтобы я смог это скорее пофиксить.

Java:
        getLogger().log(Level.WARNING, babylon instanceof ITranslator ? "BABYLON IS INSTANCE": "BABYLON FAILED");
Объединено

Решено -> оба скомпилированных jar-ника имели сгенерированный класс ITranslator, исключил из одного - заработало
 
Последнее редактирование:
Назад
Сверху Снизу