当我运行mysqldump时,我对Runtime的exec()方法的行为有点好奇。我正在运行以下命令:
mysqldump --user=root --hex-blob [database name] -r [path to sql file]
我想知道的是,运行时搜索mysqldump.exe程序在哪里?
我看到有些人在使用Runtime执行它时提供mysqldump.exe的整个文件路径。为什么是这样?
我很好奇的原因是因为我有两种情况:
两台Windows机器是否有可能有不同的默认驱动器,如果我没有提供mysqldump.exe的完整路径,系统会查看默认驱动程序?
提前致谢!
答案 0 :(得分:0)
如documentation中所述:
启动操作系统进程高度依赖系统。在许多可能出错的事情中:
- 找不到操作系统程序文件。
- 拒绝访问程序文件
- 工作目录不存在。
我建议从ProcessBuilder开始,例如:
ProcessBuilder pb = new ProcessBuilder("mysqldump ...");
Map<String, String> env = pb.environment();
env.put("PATH", env.get("PATH") + ";Path/to/mysqldump");
try {
Process process = pb.start();
//some code
} catch(IOException e){
}
这样可以确保正确设置环境变量。