Java
 Computer >> コンピューター >  >> プログラミング >> Java

【Java入門】Windows Media Playerなど外部プログラムを実行する方法(Runtime/ProcessBuilder)

JavaアプリケーションからWindows Media Playerなどの外部プログラムを実行したい場合、標準ライブラリだけで簡単に実現できます。Javaでは主にRuntimeクラスProcessBuilderクラスという2つの方法で外部プロセスを起動できます。それぞれの手順とサンプルコードを詳しく見ていきましょう。

方法1:Runtimeクラスを使用する

Javaにはjava.lang.Runtimeというクラスが用意されており、このクラスを利用することで現在の実行環境とやり取りできます。

このクラスの静的メソッドgetRuntime()は、現在のアプリケーションに関連付けられたRuntimeオブジェクトを返します。また、exec()メソッドは、実行するコマンドを表す文字列を受け取り、現在の環境(システム)上でそのプロセスを実行します。

Runtimeクラスを使って外部アプリケーションを実行する手順は以下の通りです。

  • getRuntime()メソッドでRuntimeオブジェクトを取得します。
  • 実行したいプログラムのパスを文字列としてexec()メソッドに渡し、プロセスを実行します。

サンプルコード

import java.io.IOException;

public class Trail {
    public static void main(String args[]) throws IOException {
        Runtime run = Runtime.getRuntime();
        System.out.println("外部プログラムを実行しています . . . . . . . .");
        String file = "C:\\Program Files\\Windows Media Player\\wmplayer.exe";
        run.exec(file);
    }
}

実行結果

外部プログラムを実行しています . . . . . . . .

このプログラムを実行すると、指定されたパスにあるWindows Media Playerが起動します。

方法2:ProcessBuilderクラスを使用する

ProcessBuilderクラスのコンストラクタは、実行するコマンドとその引数をString型の可変長引数として受け取り、オブジェクトを生成します。

このクラスのstart()メソッドを呼び出すと、ProcessBuilderに設定されたプロセスが開始・実行されます。ProcessBuilderクラスを使って外部プログラムを実行する手順は以下の通りです。

  • 実行するコマンドと引数をコンストラクタに渡して、ProcessBuilderクラスをインスタンス化します。
  • 作成したオブジェクトに対してstart()メソッドを呼び出し、プロセスを実行します。

サンプルコード

import java.io.IOException;

public class ExternalProcess {
    public static void main(String args[]) throws IOException {
        String command = "C:\\Program Files\\Windows Media Player\\wmplayer.exe";
        String arg = "D:\\sample.mp3";
        // プロセスの構築
        ProcessBuilder builder = new ProcessBuilder(command, arg);
        System.out.println("外部プログラムを実行しています . . . . . . . .");
        // プロセスの開始
        builder.start();
    }
}

実行結果

外部プログラムを実行しています . . . . . . . .

この例では、wmplayer.exeに「D:\sample.mp3」という引数を渡しているため、Media Playerが起動すると同時に指定したMP3ファイルが再生されます。

補足:より堅牢な実装のためのポイント

実際の開発では、以下の点にも注意するとより安全で信頼性の高いコードになります。

  • 例外処理を忘れずに: exec()やstart()はIOExceptionをスローする可能性があるため、try-catchによる適切な例外処理を追加しましょう。
  • スペースを含むパスの扱い: 「C:\Program Files」のようにスペースを含むパスでも、上記のようにパス全体を1つの文字列として渡せば正しく処理されます。
  • プロセスの終了を待機する: waitFor()メソッドを使うと、外部プロセスが終了するまで現在のスレッドを待機させることができます。
  • ProcessBuilderが推奨: Java 5以降では、エラー出力のリダイレクトや環境変数の設定など、より柔軟な制御が可能なProcessBuilderクラスの使用が推奨されています。
  1. Windows Media Playerで字幕を追加・表示する方法【初心者向け完全ガイド】

    Windows Media Playerで字幕を表示できたら便利だと思いませんか?字幕機能を活用すれば、パソコンでの動画視聴がぐっと快適になります。Windows 10以前のバージョンでは、Windows Media Playerが標準のメディアプレーヤーとして設定されていました。Windows 10をお使いの場合は、スタートメニューの検索バーから「Windows Media Player」を探し、設定を変更すれば既定のプレーヤーとして使うこともできます。 Windows Media Playerで字幕をオンにするには? ここでは、Windows Media Playerで字幕を表示するための

  2. Windows 10でWindows Media Playerがクラッシュする問題を解決する5つの方法

    お気に入りの音楽プレーヤーだったWindows Media Playerが、Windows 10で突然動かなくなって困っていませんか?あるいは、MP4ファイルが再生できなくなったということはありませんか? 原因が何であれ、心配はいりません。この記事では、破損したWindows Media Playerを修復する具体的な方法を詳しく解説します。 Windows Media Playerがクラッシュする主な原因 DRM(デジタル著作権管理)キャッシュの破損 プレーヤーの不適切なセットアップ 音声・動画のストリーミングに干渉するネットワーク設定の問題 プレーヤーライブラリの破損 これらは、Wi