Почему я получаю IllegalAccsessError? - PullRequest
0 голосов
/ 20 октября 2019

В настоящее время я программирую автоматический Updater, который загружает последнюю версию моего плагина с GitHub. Я получил Плагин для отключения, я мог заменить его, и теперь я хочу включить его, но я получаю следующую ошибку

java.lang.IllegalAccessError: tried to access class de.pixel.woolbattle.game.Lobby$1 from class de.pixel.woolbattle.game.Lobby, which seems really odd to me. My Discord: DasBabyPixel#3070

Строка, на которую указывает ошибка, это строка 30 в моем классе 'Lobby',Есть private static int deathTimer = Bukkit.getScheduler().scheduleSyncRepeatingTask(...) Я пытался сделать из «частного» в «защищенный» или «публичный», но ни один из них не работал

private static int deathTimer = Bukkit.getScheduler().scheduleSyncRepeatingTask(Main.getPlugin(Main.class), new Runnable() {
        @Override
        public void run() {
            if (Main.getGameState().getLobby() != null && Main.getGameState().getLobby().isEnabled()) {
                if (isPaused)
                    return;
                for (Player p : Main.getPlayers()) {
                    YamlConfiguration cfg = Main.getPlugin().getConfig("lobby");
                    if (p.getLocation().getBlockY() < cfg.getInt("deathheight")) {
                        p.teleport(Main.getGameState().getLobby().getSpawn());
                    }
                }
            }
        }
    }, 10, 10);

Трассировка стека:

java.lang.IllegalAccessError: tried to access class de.pixel.woolbattle.game.Lobby$1 from class de.pixel.woolbattle.game.Lobby
        at de.pixel.woolbattle.game.Lobby.<clinit>(Lobby.java:30) ~[?:?]
        at de.pixel.woolbattle.Main.onEnable(Main.java:91) ~[?:?]
        at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:321) ~[spigot-1.8.8.jar:git-Spigot-db6de12-18fbb24]
        at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:340) [spigot-1.8.8.jar:git-Spigot-db6de12-18fbb24]
        at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:405) [spigot-1.8.8.jar:git-Spigot-db6de12-18fbb24]
        at org.bukkit.craftbukkit.v1_8_R3.CraftServer.loadPlugin(CraftServer.java:357) [spigot-1.8.8.jar:git-Spigot-db6de12-18fbb24]
        at org.bukkit.craftbukkit.v1_8_R3.CraftServer.enablePlugins(CraftServer.java:317) [spigot-1.8.8.jar:git-Spigot-db6de12-18fbb24]
        at net.minecraft.server.v1_8_R3.MinecraftServer.s(MinecraftServer.java:414) [spigot-1.8.8.jar:git-Spigot-db6de12-18fbb24]
        at net.minecraft.server.v1_8_R3.MinecraftServer.k(MinecraftServer.java:378) [spigot-1.8.8.jar:git-Spigot-db6de12-18fbb24]
        at net.minecraft.server.v1_8_R3.MinecraftServer.a(MinecraftServer.java:333) [spigot-1.8.8.jar:git-Spigot-db6de12-18fbb24]
        at net.minecraft.server.v1_8_R3.DedicatedServer.init(DedicatedServer.java:263) [spigot-1.8.8.jar:git-Spigot-db6de12-18fbb24]
        at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:525) [spigot-1.8.8.jar:git-Spigot-db6de12-18fbb24]
        at java.lang.Thread.run(Unknown Source) [?:1.8.0_221]

Ответы [ 2 ]

0 голосов
/ 31 октября 2019

Я обнаружил, что проблема заключалась в том, что банку перекрывали вставками. Я запрограммировал внешний плагин, который загружает API и основной плагин, если он не работает, он копирует их из внутреннего хранилища. И когда сервер останавливается, я просто удаляю все загруженные плагины, чтобы я мог перезагружать их без той же странной ошибки встраивания.

0 голосов
/ 24 октября 2019

Правильно ли импортирован класс Main.class с вашим классом Main?

Main.getPlugin(Main.class)

Вместо этого вы можете создать экземпляр в своем основном классе, чтобы упростить кодирование и сделать его более удобным. безопасно.

...