java.lang.Runtime.exec()的替代方案,它可以作为单个字符串执行命令行?

java.lang.Runtime.exec()的替代方案,它可以作为单个字符串执行命令行?,java,runtime,runtime.exec,Java,Runtime,Runtime.exec,我正在调用,但它似乎接受命令行作为数组,我想使用单个字符串 如何使用单个字符串执行相同操作?来自链接的Javadocs: envp-字符串数组,其中每个元素的环境变量设置格式为name=value,如果子流程应继承当前流程的环境,则为null 因此,只需为第二个参数传入null,环境就会被继承。来自链接的Javadocs: envp-字符串数组,其中每个元素的环境变量设置格式为name=value,如果子流程应继承当前流程的环境,则为null 因此,只需为第二个参数传入null,环境将被继承。来

我正在调用,但它似乎接受命令行作为数组,我想使用单个字符串


如何使用单个字符串执行相同操作?

来自链接的Javadocs:

envp
-字符串数组,其中每个元素的环境变量设置格式为name=value,如果子流程应继承当前流程的环境,则为
null


因此,只需为第二个参数传入
null
,环境就会被继承。

来自链接的Javadocs:

envp
-字符串数组,其中每个元素的环境变量设置格式为name=value,如果子流程应继承当前流程的环境,则为
null


因此,只需为第二个参数传入
null
,环境将被继承。

来自文档:

envp
-字符串数组,其中每个元素的环境变量设置格式为name=value,如果子流程应继承当前流程的环境,则为
null


听起来您想为该参数传递
null

来自文档:

envp
-字符串数组,其中每个元素的环境变量设置格式为name=value,如果子流程应继承当前流程的环境,则为
null


听起来您想为该参数传递
null

如果为第二个参数传递
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;
}

如果为第二个参数传递
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 API似乎缺少以下基本功能:)


解决方法是使用数组版本而不是字符串。

目前,无法将命令行作为单个字符串调用系统命令,也无法指定当前目录

Java API似乎缺少以下基本功能:)


解决方法是使用数组版本而不是字符串。

有一个
Runtime.exec(string命令)
方法,请参阅您的链接。每个使用
Runtime.exec(…)
的人都应该读一下:@PeterBagyinszki谢谢!现在唯一的问题是,我确实希望设置当前目录,并且仍然将其作为单个命令运行。这也有一种方法:
exec(String命令,String[]envp,File dir)
这正是我没有做的,Java抱怨它找不到
python
。执行的命令行类似于
python file…
,envp是
null
,显然python已经安装(linux)并且也在
PATH
中。有一个
Runtime.exec(String命令)
方法,请查看您的链接。每个使用
Runtime.exec(…)
的人都应该读一下:@PeterBagyinszki谢谢!现在唯一的问题是,我确实希望设置当前目录,并且仍然将其作为单个命令运行。这也有一种方法:
exec(String命令,String[]envp,File dir)
这正是我没有做的,Java抱怨它找不到
python
。执行的命令行类似于
python文件….
,envp是
null
,显然python是安装在(linux)上的,并且也是安装在
路径中的。