2017-09-19 6 views
-1

ワンクリックでMacをシャットダウンするJava/JavaFXの小さなアプリケーションを開発します。MacまたはLinuxをJavaでシャットダウンする方法は?

ここに私のsetonactionです、Windows istは動作しますが、LinuxやMac OSは動作しません。おそらく誰かが考えを持っているかもしれません。おかげ

button1.setOnAction(new EventHandler<ActionEvent>() { 

      String commandEx = " "; 

      @Override 
      public void handle(ActionEvent event) { 

       if (os.contains("Windows")) { 
        commandEx = "shutdown -s -t 10"; 
       } else if (os.contains("Linux")) { 
        commandEx = "shutdown -h now"; 
       } else if (os.contains("Mac OS X")) { 
        commandEx = "shutdown -h now"; 
        try { 
         Runtime.getRuntime().exec(commandEx); 
        } catch (IOException e) { 
         e.printStackTrace(); 
        } 
       } 
      } 
     }); 
+0

と異なるコマンドを試すことができますそれらのオペレーティングシステム用のコマンドラインコマンドをgoogleし、利用可能なものを見てください。 Macで少なくとも私の研究に基づいて、あなたは 'sudo'を使う必要があります – MadProgrammer

+0

duplicate https://stackoverflow.com/a/25666/6280796 –

答えて

1

あなたはこのコードを使用するシステムの場合

public static void main(String arg[]) throws IOException{ 
    Runtime runtime = Runtime.getRuntime(); 
    Process proc = runtime.exec("shutdown -s -t 0"); 
    System.exit(0); 
} 

を特定することができ、あなたは、オペレーティングのsytemを比較使用して、あなたがすべきおそらくroot権限

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); 
} 
+0

Mac OSの' shutdown'は 'shutdown [ - ] [-h [-u] [-n] | -r [-n] | -s | -k] time [warning-message ...] '...' tプロパティが表示されない – MadProgrammer

+0

自分の回答を編集しました – bigbounty

+2

rootアクセスが必要なので、少なくともMacでは動作しませんだから、 'sudo'を使って、ユーザにルートパスワードの入力を促し、それをプロセスに渡し、間違ったパスワードを処理する方法を理解する必要があります。コマンドを呼び出すだけで、複雑になります。 – MadProgrammer

関連する問題