0

重複の可能性:
Runtime.getRuntime().exec() によるリダイレクトが機能しない

OS X で Java を使用して SQL スクリプトを実行し、データベースをテスト用に開始しようとしています。推奨される方法ではないことはわかっていますが、一時的な解決策です。

関数とパラメーターを渡す方法について読み込もうとしましたが、exec()機能させることができません。

私のコードは次のようになります。

try {
    Process p = Runtime.getRuntime().exec("/usr/local/mysql/bin/mysql -uroot dev_test <div/test_db.sql");

    p.waitFor();

    BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream()));

    while ((line = input.readLine()) != null) {        
        System.out.println(line);
    }

    input.close();

    } catch (Exception e) {
        e.printStackTrace();
    }
}

また、引数を文字列配列で渡そうとしましたが、うまくいきませんでした。

この形式を使用して Windows マシンで実行することはできましたが、osx で動作するように変更することはできません。

Process p = Runtime.getRuntime().exec(new String[] { "cmd", "/C", "mysql -u root dev_test < div\\test_db.sql" });
4

1 に答える 1

2

Windowsソリューションのように、代わりにunixシェルを使用するようにコードを変更しました。結果のコードは次のようになります。

String [] cmd = {"/bin/sh" , "-c", "/usr/local/mysql/bin/mysql -u root dev_test <div/test_db.sql"};
Process p = Runtime.getRuntime().exec(cmd);

ありがとう、ヨアヒム!再投稿してすみません。

于 2012-10-19T11:15:25.050 に答える