1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Помогите Ошибка при использовании нескольких классов

Тема в разделе "Разработка плагинов для новичков", создана пользователем conqu_error, 8 авг 2019.

  1. Автор темы
    conqu_error

    conqu_error Новичок

    Баллы:
    16
    Здравствуйте. При разработке плагина столкнулся с ошибкой. Для удобства я хотел сделать несколько классов. Но при загрузке плагина выводит такую ошибку:
    [08:50:50 WARN]: Caused by: java.lang.IllegalArgumentException: Plugin already initialized!
    [08:50:50 WARN]: at org.bukkit.plugin.java.PluginClassLoader.initialize(PluginClassLoader.java:183)
    [08:50:50 WARN]: at org.bukkit.plugin.java.JavaPlugin.<init>(JavaPlugin.java:60)
    [08:50:50 WARN]: at ru.quietw.qspy.CommandSpy.<init>(CommandSpy.java:14)
    [08:50:50 WARN]: at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    [08:50:50 WARN]: at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    [08:50:50 WARN]: at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    [08:50:50 WARN]: at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
    [08:50:50 WARN]: at java.lang.Class.newInstance(Class.java:442)
    [08:50:50 WARN]: at org.bukkit.plugin.java.PluginClassLoader.<init>(PluginClassLoader.java:90)
    [08:50:50 WARN]: at org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.java:129)
    [08:50:50 WARN]: ... 13 more
    [08:50:50 WARN]: Caused by: java.lang.IllegalStateException: Initial initialization
    [08:50:50 WARN]: at org.bukkit.plugin.java.PluginClassLoader.initialize(PluginClassLoader.java:186)
    [08:50:50 WARN]: at org.bukkit.plugin.java.JavaPlugin.<init>(JavaPlugin.java:60)
    [08:50:50 WARN]: at ru.quietw.qspy.CommandSpy.<init>(CommandSpy.java:14)
    [08:50:50 WARN]: at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    [08:50:50 WARN]: at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    [08:50:50 WARN]: at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    [08:50:50 WARN]: at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
    [08:50:50 WARN]: at java.lang.Class.newInstance(Class.java:442)
    [08:50:50 WARN]: at org.bukkit.plugin.java.PluginClassLoader.<init>(PluginClassLoader.java:90)
    [08:50:50 WARN]: at org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.java:129)
    [08:50:50 WARN]: at org.bukkit.plugin.SimplePluginManager.loadPlugin(SimplePluginManager.java:327)
    [08:50:50 WARN]: at com.rylinaux.plugman.util.PluginUtil.load(PluginUtil.java:356)
    [08:50:50 WARN]: at com.rylinaux.plugman.util.PluginUtil.load(PluginUtil.java:318)
    [08:50:50 WARN]: at com.rylinaux.plugman.util.PluginUtil.reload(PluginUtil.java:380)
    [08:50:50 WARN]: at com.rylinaux.plugman.command.ReloadCommand.execute(ReloadCommand.java:122)
    Класс CommandSpy:
    Код:
    package ru.quietw.qspy;
    
    import org.bukkit.Bukkit;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandSender;
    import org.bukkit.event.Listener;
    import org.bukkit.plugin.PluginManager;
    import org.bukkit.plugin.java.JavaPlugin;
    
    import java.io.File;
    import java.util.List;
    
    public class CommandSpy extends JavaPlugin implements Listener {
    
        File config = new File(getDataFolder() + File.separator + "config.yml");
    
        @Override
        public void onEnable() {
            Bukkit.getServer().getPluginManager().registerEvents(this, this);
    
            if(!config.exists()){
                getConfig().options().copyDefaults(true);
                saveDefaultConfig();
            }
        }
    
        @Override
        public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
            if(command.getName().equalsIgnoreCase("spyon")){
                if(sender.hasPermission("qplay.spy")) {
                    Data data = new Data();
                    List<String> list = getConfig().getStringList("enabledPlayers");
                    list.add(sender.getName());
                    getConfig().set("enabledPlayers", list);
                    data.saveData(getConfig(), config);
                    sender.sendMessage(getConfig().getString("spyOnMsg").replace("&", "§"));
                }
            }
            if(command.getName().equalsIgnoreCase("spyreload")){
                PluginManager plMan = Bukkit.getServer().getPluginManager();
                plMan.getPlugin("QuietSpy").reloadConfig();
                sender.sendMessage(getConfig().getString("reloadedMsg").replace("&", "§"));
            }
            return false;
        }
    }
    
    Класс Data:
    Код:
    package ru.quietw.qspy;
    
    import org.bukkit.configuration.file.FileConfiguration;
    
    import java.io.File;
    import java.io.IOException;
    
    public class Data {
        public void saveData(FileConfiguration config, File configFile){
            try{
               config.save(configFile);
            } catch(IOException e){
                e.printStackTrace();
            }
        }
    }
    
    Помогите, пожалйста.
    Заранее спасибо.
     
  2. HunterGaming

    HunterGaming Активный участник Пользователь

    Баллы:
    96
    Имя в Minecraft:
    sqdFendy
    Твой плагин уже инициализировался. Мб, у тебя на сервере присутствуют 2 плагина с одинаковым пакетом и названием главного класса.
     
  3. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    File config = new File(getDataFolder() + File.separator + "config.yml"); Зачем?
    saveDefaultConfig(); и так не копирует на существующий конфиг.
     

Поделиться этой страницей