您能告诉我一种从 Java 执行进程而不管底层操作系统如何的方法吗?例如。
Process p = Runtime.getRuntime().exec("cmd /c mvn clean install");
上面一行在 Windows 环境中执行 Maven,但我如何在任何操作系统中运行上面的命令?
如果我不在开始时添加 "cmd/c"
那么我将无法在 windows 环境中运行并且错误显示 cannot find mvn.bat
虽然maven home 设置正确。
最佳答案
您可以检查您的操作系统类型,然后执行命令行语句。
为了检查操作系统类型,您需要检索 os.name
系统属性的值:
String OS = System.getProperty("os.name").toLowerCase();
然后使用简单的 if/else
语句,您可以根据操作系统的类型执行命令行语句。
if (isUnix()) {
String statement = new String[] { "/bin/bash", "-c", "mvn clean install" };
Process p = Runtime.getRuntime().exec(statement);
else if (isWindows()) {
Process p = Runtime.getRuntime().exec("cmd /c mvn clean install");
}
...
检查操作系统类型的辅助方法:
public boolean isUnix() {
return (OS.indexOf("nix") >= 0 || OS.indexOf("nux") >= 0 || OS.indexOf("aix") > 0 );
}
public boolean isWindows() {
return (OS.indexOf("win") >= 0);
}
更多信息你可以找到here .
关于java - 无论底层操作系统如何,都从 Java 执行进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18655538/