Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Скрыть объявление

Помогите Включение незарегистрированного в PluginClassLoader плагина

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

Статус темы:
Закрыта.
  1. Автор темы
    iD3LSY

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

    Баллы:
    46
    Имя в Minecraft:
    opy
    Привет все :)

    Проблема уже описана в название, но я попытаюсь объяснить более детально. При принудительном отключение, включение плагина в консоль отдает сообщение.
    Код:
    [16:59:07 INFO]: [Plugin] Disabling Plugin v1.0
    [16:59:07 INFO]: [Plugin] Enabling Plugin v1.0
    [16:59:07 WARN]: Enabled plugin with unregistered PluginClassLoader Plugin v1.0
    Проблема не такая уж и большая, но хотелось бы убрать такие сообщения.

    Немного порыв в гугле, я нашёл конечно же темы, но во всех из них говорили о каких либо плагинах, которые могут отправлять подобные сообщения (PermissionsEx, AuthMe, другие). У меня же стоит только 1 плагин - Plugin(xD).

    Сам класс из сурцов ведра. *тык* (PluginClassLoader)
     
  2. Хостинг MineCraft
    <
  3. xDark

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

    Баллы:
    96
    Skype:
    ailyashevich
    Имя в Minecraft:
    xDark
    Можно посмотреть откуда было вызвано это сообщение (попытаться)
    Поиграйся с числом, и найдешь (А может и нет).
    Thread.currentThread().geStackTrace()[1][DOUBLEPOST=1493475472,1493475196][/DOUBLEPOST]Копайся в JavaPluginLoader'е.
    Код:
      @Override
      public void enablePlugin(Plugin plugin)
      {
        Validate.isTrue(plugin instanceof JavaPlugin, "Plugin is not associated with this PluginLoader");
        if (!plugin.isEnabled())
        {
          plugin.getLogger().info("Enabling " + plugin.getDescription().getFullName());
        
          JavaPlugin jPlugin = (JavaPlugin)plugin;
        
          PluginClassLoader pluginLoader = (PluginClassLoader)jPlugin.getClassLoader();
          if (!this.loaders.contains(pluginLoader))
          {
            this.loaders.add(pluginLoader);
            this.server.getLogger().log(Level.WARNING, "Enabled plugin with unregistered PluginClassLoader " + plugin.getDescription().getFullName());
          }
          try
          {
            jPlugin.setEnabled(true);
          }
          catch (Throwable ex)
          {
            this.server.getLogger().log(Level.SEVERE, "Error occurred while enabling " + plugin.getDescription().getFullName() + " (Is it up to date?)", ex);
          }
          this.server.getPluginManager().callEvent(new PluginEnableEvent(plugin));
        }
      }
     
  4. molor

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

    Баллы:
    66
    Имя в Minecraft:
    molore
    Это просто предупреждение, на работу плагина оно никак не влияет.

    Выводится оно, как я понял, когда недавно разбирался с ним, только потому, что ядро не планирует загружать этот плагин вновь после его выключения (ибо удаляет его PluginClassLoader). Но если его всё таки включить, ядро сообщит сие предупреждение и восстановит его Class Loader. Где-то я могу быть не прав, т. к. не помню деталей; но на работу точно не влияет.
     
  5. xDark

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

    Баллы:
    96
    Skype:
    ailyashevich
    Имя в Minecraft:
    xDark
    Потому что у плагина, почему - то кастумный class loader, скорее всего.
    Ну или потому что при выключении плагина удаляется class loader из сета, что тоже возможно.
    update: Да, так и есть.
    Код:
     
      @Override
      public void disablePlugin(Plugin plugin)
      {
        Validate.isTrue(plugin instanceof JavaPlugin, "Plugin is not associated with this PluginLoader");
        if (plugin.isEnabled())
        {
          String message = String.format("Disabling %s", new Object[] { plugin.getDescription().getFullName() });
          plugin.getLogger().info(message);
         
          this.server.getPluginManager().callEvent(new PluginDisableEvent(plugin));
         
          JavaPlugin jPlugin = (JavaPlugin)plugin;
          ClassLoader cloader = jPlugin.getClassLoader();
          try
          {
            jPlugin.setEnabled(false);
          }
          catch (Throwable ex)
          {
            this.server.getLogger().log(Level.SEVERE, "Error occurred while disabling " + plugin.getDescription().getFullName() + " (Is it up to date?)", ex);
          }
          if ((cloader instanceof PluginClassLoader))
          {
            PluginClassLoader loader = (PluginClassLoader)cloader;
            this.loaders.remove(loader);
           
            Set<String> names = loader.getClasses();
            for (String name : names) {
              removeClass(name);
            }
          }
     
  6. Автор темы
    iD3LSY

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

    Баллы:
    46
    Имя в Minecraft:
    opy
    Не, я конечно даун, но это я и сам заметил, ибо читать я умею. Про функционал я тоже знаю, что не влияет. Влияет на мой перфекционизм, может это и тупо, но все же.
     
  7. molor

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

    Баллы:
    66
    Имя в Minecraft:
    molore
    Та же проблема. Но я её решил тем, что перезагружаю плагин как можно реже (или совсем нет, или только вместе с сервером), или просто не смотрю в консоль. Хе.
     
  8. Автор темы
    iD3LSY

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

    Баллы:
    46
    Имя в Minecraft:
    opy
    Ладно. Думаю просто сейчас буду херню в последующие 10 минут писать, так что просто закрою тему.

    Всем спасибо, бб.
     
Статус темы:
Закрыта.

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