0

重複の可能性:
Javaを使用してコンピューターをシャットダウンする

特定の時間または特定の日時にコンピュータをシャットダウンする個人用プログラムを作成しています。ただし、私は複数のオペレーティングシステムを実行しており、1つの単純なJavaプログラムでこれを実行したいと考えています。外部ライブラリを使用せずに、Javaでシステムに依存しないマシンシャットダウン要求を送信する方法はありますか?Windowsで使用できることは知っていますjava.awt.Desktop.getDesktop().browse(new URI("shutdown /s"));が、繰り返しになりますが、システムに依存しないようにしたいです。

4

3 に答える 3

1

いいえ、ありません。

これは、JVMまたは標準のJavaクラスライブラリの範囲外です。

ハッピーコーディング。

于 2011-12-23T05:21:56.617 に答える
0

スケジューラーを使ってみませんか?すべての主要なオペレーティングシステムは、そのような機能(cron、atなど)をサポートしています。最新のWindows(Windows 7)、Linuxなどで使用できるようになる許可などの他の要因がある可能性があります。

実際にシステムコールを使用したい場合は、JNAを使用してみてください。これにより、プラットフォーム固有のアクセスが大幅に簡素化されます。

于 2011-12-23T05:48:07.253 に答える
0

@robjbは私に最良の解決策を与えてくれました。少し柔軟性がありませんが、問題が発生するまで訴えます。

  String shutdownCommand;
  StringPP operatingSystem = new StringPP(System.getProperty("os.name"));

  if (operatingSystem.containsIgnoreCase("linux") ||
      operatingSystem.containsIgnoreCase("mac") ||
      operatingSystem.containsIgnoreCase("unix"))
  {
    shutdownCommand = "sudo shutdown -h -t 30";
  }
  else if (operatingSystem.containsIgnoreCase("windows"))
  {
    shutdownCommand = "shutdown /s /d P:0:0 /t 30 /c \"Blue Husky Timer 2 is shutting down your system, as you requested. \n"
        + "You have 30 seconds to save and close programs\"";
  }
  else
  {
    throw new UnsupportedOperationException("Unsupported operating system.");
  }

  try
  {
    Runtime.getRuntime().exec(shutdownCommand);
  }
  catch (Throwable t)
  {
    Main.LOG.logThrowable(t);
  }
  System.exit(0);

上記の例では、は、上記のようなメソッドを使用してStringPPの機能を拡張するカスタムクラスです。私が作成して使用したロギングユーティリティです。String#containsIgnoreCaseMain.LOG

于 2011-12-24T01:35:55.643 に答える