我想用Java执行以下命令:
"C:\Program \MySQL\MySQL Server 5.5\bin\"mysqldump -u root --密码=xxxx-例程数据库> C:\Users\john\Desktop\backup.sql
当我使用Windows应用程序时,这个命令运行得很好,但对我的cmd.exe应用程序却不是这样。
cmd = "\"C:\\Program Files\\MySQL\\MySQL Server 5.5\\bin\\\"mysqldump
-u root --password=xxxx --routines database > C:\\Users\\john\\Desktop\\backup.sql
Runtime runtime = Runtime.getRuntime();
process = runtime.exec(cmd);我得到了以下错误:
"C:\Program \MySQL\MySQL Server 5.5\bin\"mysqldump -u root --密码=xxxx-例程数据库> C:\Users\john\Desktop\backup.sql java.io.IOException:无法运行程序“C:\ program”:CreateProcess error=5,访问被拒绝
你有什么想法吗?
谢谢。
发布于 2011-12-06 17:22:21
错误5要么是1)无法访问文件/文件夹,要么是2)没有权限。
看起来,您的“程序文件”目录名中的空格可能会造成麻烦。检查上面写着“无法运行程序""C:\ program”的地方。这显然不是对您试图运行的命令的引用。我要做的是将MySQL添加到您的路径中,然后只调用mysqldump命令,而不需要路径。如果不想这样做,可以定义一个系统变量并使用%MYSQL_HOME%\mysqldump引用它。
一旦您解析了路径,如果这仍然不能工作,您将需要查看该命令的权限。您需要确保进程具有执行命令的权限。我认为这是在当地的管理小组或类似的。
甜甜圈是你的必经之路。
发布于 2011-12-06 17:11:16
您正在尝试使用重定向(>),它是shell的一个函数。
如果没有shell,那么您将直接对exec进程进行mysqldump操作。
您要么需要从process对象读取输出流并自己将其写入文件,要么需要在重定向的同时为您执行exec shell以执行mysqldump。
https://stackoverflow.com/questions/8403831
复制相似问题