restart jar не работаит :((((

  • Автор темы Автор темы xDark
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

xDark

Активный участник
Пользователь
Баллы
96
пишу рестарт для сервера, через .sh & .bat все работает, а через .jar - nope
Помогите найти ошибку
JavaScript:
      public static void restart()
      {
        restart(new File(configManager.restartScript));
      }
      public static void restart(File script)
      {
        AsyncCatcher.enabled = false;
        try
        {
          if (script.isFile())
          {
            System.out.println("[WipeUtil] Trying to restart with " + configManager.restartScript);
          
            WatchdogThread.doStop();
            for (Player ps : Bukkit.getOnlinePlayers()) {
                ps.kickPlayer(configManager.messageReboot);
            }
            try
            {
              Thread.sleep(100L);
            }
            catch (InterruptedException ex) {}
            MinecraftServer.getServer().getServerConnection().b();
            try
            {
              Thread.sleep(100L);
            }
            catch (InterruptedException ex) {}
            try
            {
              MinecraftServer.getServer().stop();
            }
            catch (Throwable t) {}
            Object shutdownHook = new Thread()
            {
              private Object val$script;

            public void run()
              {
                try
                {
                  String os = System.getProperty("os.name").toLowerCase();
                  if (os.contains("win")) {
                    Runtime.getRuntime().exec("cmd /c start " + ((File) this.val$script).getPath());
                  } else {
                    Runtime.getRuntime().exec(new String[] { "sh", ((File) this.val$script)
                  
                      .getPath() });
                  }
                }
                catch (Exception e)
                {
                  e.printStackTrace();
                }
              }
            };
            ((Thread)shutdownHook).setDaemon(true);
            Runtime.getRuntime().addShutdownHook((Thread)shutdownHook);
          }else {
            System.out.println("[WipeUtil] Startup script '" + configManager.restartScript + "' not found! Attempting to restart with .jar file!.");
            if (jar.exists()) {    
                WatchdogThread.doStop();
            for (Player ps : Bukkit.getOnlinePlayers()) {
                ps.kickPlayer(configManager.messageReboot);
            }
            try
            {
              Thread.sleep(100L);
            }
            catch (InterruptedException ex) {}
            MinecraftServer.getServer().getServerConnection().b();
            try
            {
              Thread.sleep(100L);
            }
            catch (InterruptedException ex) {}
            try
            {
              MinecraftServer.getServer().stop();
            }
            catch (Throwable t) {}
            Object shutdownHook = new Thread()
            {
            try {
              Runtime.getRuntime().exec("Spigot.jar");
            }
        catch (Exception e)
        {
          e.printStackTrace();
        }
      }
    }
    ((Thread)shutdownHook).setDaemon(true);
    Runtime.getRuntime().addShutdownHook((Thread)shutdownHook);
          }
И да, в процессах Java есть - но сервер не запускается.
 
.jar не запускается в диалоговом окне, для этого и существует .bat и .sh
 
Все еще нет, процесс висит - но не работает сервер
JavaScript:
        finally
          {
            System.out.println("Startup script '" + "start.bat" + "" does not exist! Getting .jar!");
            try {
                Runtime.getRuntime().exec("java -Xmx1G spigot.jar");
            } catch (Exception r) {
                r.printStackTrace();
            }
          }
      }
 
Последнее редактирование:
Все еще нет, процесс висит - но не работает сервер
JavaScript:
        finally
          {
            System.out.println("Startup script '" + "start.bat" + "" does not exist! Getting .jar!");
            try {
                Runtime.getRuntime().exec("java -Xmx1G spigot.jar");
            } catch (Exception r) {
                r.printStackTrace();
            }
          }
      }
1. ProcessBuilder
2. Выведи OutputStream в консоль и узнай, что происходит.
 
Хорошо, с этим разобрался, спасибо @Larin но теперь не закрывается начальное окно, т.е. плагины выключаются, сервер - нет

Можно ли "эмулировать" команду taskkill иlи PAUSE?
Код:
        finally
          {
            System.out.println("Startup script '" + SpigotConfig.restartScript + "' does not exist! Getting .jar!");
            try {
                Runtime.getRuntime().exec("cmd /c start spigot.jar");
            } catch (Exception r) {
                r.printStackTrace();
            }
          }
      }
 
Хорошо, с этим разобрался, спасибо @Larin но теперь не закрывается начальное окно, т.е. плагины выключаются, сервер - нет

Можно ли "эмулировать" команду taskkill иlи PAUSE?
Не понял.
Какое начальное окно?
"Сервер нету"?
 
Не понял.
Какое начальное окно?
"Сервер нету"?
Опечатка, я имею ввиду сервер запускается как надо, но теперь их 2 - т.к. после этого он не стопается
upd: Разобрался, тему закрываю, спасибо за помощь
 
Последнее редактирование:
Статус
Закрыто для дальнейших ответов.
Назад
Верх