Java运行时真空数据库

标签 java processbuilder

我正在尝试从 java 运行时运行 vaccum db。我在命令工具中运行的语法相同,它可以工作,但从 java 运行它不行:

final String cmd = "vacuumdb, -d wsemp0408, -v, -z;";

    try {
        System.out.println("ABC BACKUP START");
        java.lang.Runtime rt = java.lang.Runtime.getRuntime();
        java.lang.Process p = rt.exec(cmd);
        System.out.println("ABC BACKUP END");
    }

收到此错误:

java.io.IOException: Cannot run program "vacuumdb,": java.io.IOException: error=2, No such file or directory
at java.lang.ProcessBuilder.start(ProcessBuilder.java:459)
at java.lang.Runtime.exec(Runtime.java:593)
at java.lang.Runtime.exec(Runtime.java:431)
at java.lang.Runtime.exec(Runtime.java:328)
at accelteam.sop.backup.DBBackup.start(DBBackup.java:35)
at accelteam.sop.Sop.run(Sop.java:20)
Caused by: java.io.IOException: java.io.IOException: error=2, No such file or directory
at java.lang.UNIXProcess.<init>(UNIXProcess.java:148)
at java.lang.ProcessImpl.start(ProcessImpl.java:65)
at java.lang.ProcessBuilder.start(ProcessBuilder.java:452)
... 5 more

有人遇到过这种情况吗?

添加完整路径仍然显示错误:

java.io.IOException: Cannot run program "/usr/lib/postgresql/9.3/bin/vacuumdb,": java.io.IOException: error=2, No such file or directory

我创建了一个使用 root 和 chmod 777 的 exe jar 文件,希望有权限问题,但仍然相同

最佳答案

通过添加完整路径并删除 , 进行修复

final String cmd = "/usr/lib/postgresql/9.3/bin/vacuumdb -d wsemp0408 -v -z";

运行正确。

关于Java运行时真空数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36760138/

相关文章:

java - Java 中 iText 中的列表字母和项目符号问题

java - 如何使用迭代器以编程方式绘制 N 个元素的 block

java - 如何使用 ProcessBuilder 启动批处理文件而不是作为子进程?

java - Python 脚本未在 Java 中输出

java - 如何在不卡住 Java Swing 中的 GUI 的情况下与进程随机通信?

Java servlet java.lang.UnsupportedClassVersionError

java - Java私有(private)声明

java - 如何使用 Java Swing 使用 onClick 事件运行 linux 命令?

java - Windows空间中* .exe路径和参数中的java ProcessBuilder

java.io.IOException : error=36, Java 中的文件名太长