【发布时间】:2019-05-23 22:41:23
【问题描述】:
在 Linux 机器(特别是 Ubuntu 18.04)上运行的 Java 应用程序上使用 java.lang.ProcessBuilder,可以执行哪些操作以使执行的命令能够运行而不抛出 Permission Denied。
代码如下:
boolean isWindows = System.getProperty("os.name")
.toLowerCase().startsWith("windows");
ProcessBuilder builder = new ProcessBuilder();
if (isWindows) {
builder.directory(new File(System.getProperty("user.home")));
builder.command("cmd.exe", "/c", command);
} else {
builder.directory(new File(System.getenv("HOME")));
builder.command("sh", "-c", command);
}
Process process = builder.start();
【问题讨论】:
-
运行您的 java 进程的用户是否有适当的权限来运行该命令(并访问预期的文件夹)或者您想为这些命令使用不同的用户?