Выключение компьютера
89170 просмотра
9 ответа
Есть ли способ выключить компьютер, используя встроенный метод Java?
Автор: jjnguy Источник Размещён: 17.05.2019 02:56Ответы (9)
82 плюса
Создать свою собственную функцию для выполнения команды ОС через командную строку ?
Ради примера. Но знайте, где и почему вы хотите использовать это как примечание других.
public static void main(String arg[]) throws IOException{
Runtime runtime = Runtime.getRuntime();
Process proc = runtime.exec("shutdown -s -t 0");
System.exit(0);
}
Автор: David McGraw
Размещён: 25.08.2008 04:08
74 плюса
Вот еще один пример, который может работать кроссплатформенно:
public static void shutdown() throws RuntimeException, IOException {
String shutdownCommand;
String operatingSystem = System.getProperty("os.name");
if ("Linux".equals(operatingSystem) || "Mac OS X".equals(operatingSystem)) {
shutdownCommand = "shutdown -h now";
}
else if ("Windows".equals(operatingSystem)) {
shutdownCommand = "shutdown.exe -s -t 0";
}
else {
throw new RuntimeException("Unsupported operating system.");
}
Runtime.getRuntime().exec(shutdownCommand);
System.exit(0);
}
Для определенных команд завершения работы могут потребоваться разные пути или административные привилегии.
Автор: David Crow Размещён: 25.08.2008 04:4727 плюса
Вот пример использования SystemUtils Apache Commons Lang :
public static boolean shutdown(int time) throws IOException {
String shutdownCommand = null, t = time == 0 ? "now" : String.valueOf(time);
if(SystemUtils.IS_OS_AIX)
shutdownCommand = "shutdown -Fh " + t;
else if(SystemUtils.IS_OS_FREE_BSD || SystemUtils.IS_OS_LINUX || SystemUtils.IS_OS_MAC|| SystemUtils.IS_OS_MAC_OSX || SystemUtils.IS_OS_NET_BSD || SystemUtils.IS_OS_OPEN_BSD || SystemUtils.IS_OS_UNIX)
shutdownCommand = "shutdown -h " + t;
else if(SystemUtils.IS_OS_HP_UX)
shutdownCommand = "shutdown -hy " + t;
else if(SystemUtils.IS_OS_IRIX)
shutdownCommand = "shutdown -y -g " + t;
else if(SystemUtils.IS_OS_SOLARIS || SystemUtils.IS_OS_SUN_OS)
shutdownCommand = "shutdown -y -i5 -g" + t;
else if(SystemUtils.IS_OS_WINDOWS)
shutdownCommand = "shutdown.exe /s /t " + t;
else
return false;
Runtime.getRuntime().exec(shutdownCommand);
return true;
}
Этот метод учитывает намного больше операционных систем, чем любой из приведенных выше ответов. Это также выглядит намного лучше и надежнее, чем проверка os.name
собственности.
Редактировать: Поддерживает задержку и все версии Windows (вкл. 8/10).
Автор: Kezz101 Размещён: 12.01.2013 07:5622 плюса
Быстрый ответ - нет. Единственный способ сделать это - вызвать специфичные для ОС команды, которые приведут к выключению компьютера, при условии, что ваше приложение обладает необходимыми привилегиями для этого. Это изначально непереносимо, поэтому вам нужно либо знать, где будет работать ваше приложение, либо иметь разные методы для разных ОС и определить, какую из них использовать.
Автор: Wilson Размещён: 25.08.2008 04:148 плюса
Я использую эту программу, чтобы выключить компьютер через X минут.
public class Shutdown {
public static void main(String[] args) {
int minutes = Integer.valueOf(args[0]);
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
ProcessBuilder processBuilder = new ProcessBuilder("shutdown",
"/s");
try {
processBuilder.start();
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}, minutes * 60 * 1000);
System.out.println(" Shutting down in " + minutes + " minutes");
}
}
Автор: Jonathan Barbero
Размещён: 06.02.2010 04:13
5 плюса
Лучше использовать .starts, чем использовать .equals ...
String osName = System.getProperty("os.name");
if (osName.startsWith("Win")) {
shutdownCommand = "shutdown.exe -s -t 0";
} else if (osName.startsWith("Linux") || osName.startsWith("Mac")) {
shutdownCommand = "shutdown -h now";
} else {
System.err.println("Shutdown unsupported operating system ...");
//closeApp();
}
работать нормально
Ra.
Автор: Ra. Размещён: 28.01.2010 08:552 плюса
Вы можете использовать JNI, чтобы делать это так, как вы делаете это с C / C ++.
Автор: Steve M Размещён: 25.08.2008 04:171 плюс
В Windows Embedded по умолчанию нет команды выключения в cmd. В таком случае вам нужно добавить эту команду вручную или использовать функцию ExitWindowsEx из win32 (user32.lib) с помощью JNA (если вам нужно больше Java) или JNI (если вам проще будет установить привилегии в коде C).
Автор: Waldemar Wosiński Размещён: 31.05.2012 08:280 плюса
простая одиночная линия
Runtime.getRuntime().exec("shutdown -s -t 0");
но работают только на окнах
Автор: Andrea Bori Размещён: 06.11.2014 02:34Вопросы из категории :
- java В чем разница между int и Integer в Java и C #?
- java Как я могу определить IP моего маршрутизатора / шлюза в Java?
- java Каков наилучший способ проверки XML-файла по сравнению с XSD-файлом?
- java Как округлить результат целочисленного деления?
- java Преобразование списка <Integer> в список <String>
- java Почему я не могу объявить статические методы в интерфейсе?
- cross-platform Python: На какой ОС я работаю?
- cross-platform Выключение компьютера
- cross-platform Как запустить сценарий Python как службу в Windows?
- cross-platform Есть ли способ встроить браузер в Java?
- cross-platform Как вы держите машину без сна?
- cross-platform Какой инструментарий GUI вы бы использовали для сенсорного интерфейса?
- shutdown Как выключить компьютер из C #
- shutdown Как отключить, перезапустить или выйти из Windows через файл bat?
- shutdown Как безопасно принудительно отключить Mac
- shutdown В PHP max_execution_time влияет на функции завершения работы, которые запускаются с помощью вызова register_shutdown_function ()?
- shutdown Заменить выключение на спящий