如何在mysqldump.exe位置独立启动java中的mysqldump.exe?

时间:2013-08-15 09:33:39

标签: java mysql mysqldump

我想用java备份mysql数据库。

我想在mysqldump.exe的位置上启动mysqldump.exe 独立。 要启动mysqldump.exe,我需要写一个完整的路径:

String executeCmd = "D://mysql-5.6.11-win32/bin/mysqldump -u "

难道你不知道如何摆脱完整的道路 也许有办法让mysqldump.exe获得所有连接细节的路径 您如何在不指定完整路径的情况下启动mysqldump.exe? 如果我不能,那么如何在不要求用户手动提供路径的情况下,在计算机上获取mysqldump.exe的路径。

如果我尝试使用没有mysqldump.exe完整路径的mysqldump,我会收到以下异常:

java.io.IOException: Cannot run program "mysqldump": CreateProcess error=2, Íå óäàåòñÿ íàéòè óêàçàííûé ôàéë
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)
    at java.lang.Runtime.exec(Runtime.java:615)
    at java.lang.Runtime.exec(Runtime.java:448)
    at java.lang.Runtime.exec(Runtime.java:345)
    at dbViewer.model.ConnectionManager.backupDB(ConnectionManager.java:273)
    at dbViewer.model.ConnectionManager.main(ConnectionManager.java:337)
Caused by: java.io.IOException: CreateProcess error=2, Íå óäàåòñÿ íàéòè óêàçàííûé ôàéë
    at java.lang.ProcessImpl.create(Native Method)
    at java.lang.ProcessImpl.<init>(ProcessImpl.java:189)
    at java.lang.ProcessImpl.start(ProcessImpl.java:133)
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:1021)
    ... 5 more

谢谢!

1 个答案:

答案 0 :(得分:0)

您可以定义一个环境变量,例如将其命名为MYSQLDUMP_LOCATION。然后只是参考它。在我的示例中,我定义了一个名为CMD_LOCATION的环境变量(请注意,您将不得不重新启动Windows,否则将无法找到它。)

public static void main(String[] args) {

        Map<String, String> env = System.getenv();

        final String CMD_LOCATION = env.get("CMD_LOCATION"); 

        try {
            Runtime.getRuntime().exec(CMD_LOCATION + System.getProperty("file.separator")+"cmd /c start cmd.exe");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

所以在你的情况下,你必须写

Runtime.getRuntime().exec(MYSQLDUMP_LOCATION + system.getProperty("file.separator")+"mysqldump -u");