0

java.lang.Runtime.exec(...)を呼び出していますが、これはコマンドラインを配列として受け入れるようで、単一の文字列を使用したいと考えています。

単一の文字列を使用して同じことを行うにはどうすればよいですか?

4

4 に答える 4

2

2番目のパラメーターを渡すnullと、現在の環境が継承されます。

System.getEnv()現在の環境を変更する場合は、次のように構築できます。

private static String[] getEnv() {
    Map<String, String> env = System.getenv();
    String[] envp = new String[env.size()];
    int i = 0;
    for (Map.Entry<String, String> e : env.entrySet()) {
        envp[i++] = e.getKey() + "=" + e.getValue();
    }
    return envp;
}

アップデート

あなたはあなたのJavaパスをチェックすることができますSystem.out.println(System.getenv("PATH"));

パスに問題がない場合は、

String[] commands = new String[] { "bash", "-c", "python foo/bar.py" };
Runtime.getRuntime().exec(commands, null, new File("/workingDir"));
于 2012-06-01T16:16:56.703 に答える
2

リンクされた Javadoc から:

envp- 文字列の配列。各要素にはname=valueの形式の環境変数設定が含まれます。またはnull、サブプロセスが現在のプロセスの環境を継承する必要がある場合。

したがってnull、2 番目のパラメーターを渡すだけで、環境が継承されます。

于 2012-06-01T16:09:17.717 に答える
1

ドキュメントから:

envp- 文字列の配列。各要素には、name = valueの形式の環境変数設定が含まれます。またはnull、サブプロセスが現在のプロセスの環境を継承する必要がある場合。

nullその引数を渡したいようです。

于 2012-06-01T16:09:42.580 に答える
0

現在、コマンド ラインを 1 つの文字列としてシステム コマンドを呼び出し、現在のディレクトリを指定する方法はありません。

Java API にはこの基本機能が欠けているようです :)

回避策は、文字列の代わりに配列バージョンを使用することです。

于 2012-06-14T09:25:08.400 に答える