Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中运行进程_Java_Process - Fatal编程技术网

在Java中运行进程

在Java中运行进程,java,process,Java,Process,在我的Java应用程序中,我启动一个postgres进程来备份我的数据库 Thread thread = new Thread(() ->{ Process p; try{ p = Runtime.getRuntime().exec("cmd /c pg_dump -v -a -d "+database+" -h "+server+" -p "+port+" -U "+user+" -n public > " + fil

在我的Java应用程序中,我启动一个postgres进程来备份我的数据库

       Thread thread = new Thread(() ->{
       Process p;
       try{
           p = Runtime.getRuntime().exec("cmd /c pg_dump -v -a -d "+database+" -h "+server+" -p "+port+" -U "+user+" -n public > " + file.getPath());
           p.waitFor();
       }catch(Exception e){
           return false;
       }
       });
此操作正常,备份文件已创建。但是当我的应用程序运行时,文件大小是0KB。在我关闭Java应用程序后,备份文件将保持正常大小


我不明白问题出在哪里,我猜它可能与
文件以及处理它的方式有关(我的猜测是基于代码中的
文件.getPath()

但是,您还没有发布全部代码。。。所以,我唯一能做的就是猜测

使用预定义的文件名尝试相同的代码(例如
c:\\myfilename.dmp

e、 g。
p=Runtime.getRuntime().exec(“cmd/c pg_dump-v-a-d”+数据库+“-h”+服务器+“-p”+端口+“-U”+用户+”-n public>c:\\myfilename.dmp”


它的行为如何?

很抱歉,但我很难正确解释这一点

在我的应用程序中,我尝试使用PostgreSQL中的pg_dump创建一个数据库转储文件。如果我启动转储过程,则在关闭整个应用程序后将创建该文件

我希望我的解释可以理解

我试图预定义文件的路径。但也是同样的错误。我还使用了ProcessBuilder intead

问题是我在pg_dump命令中使用了-v选项。没有这个选项,它工作正常,文件将立即创建

这是详细输出的选项。下面是我的最后一个方法,它可以很好地工作:

                Process process = new ProcessBuilder("pg_dump", "-a", "-d", database, "-h", server, "-p", port, "-U", user, "-f", file.getPath()).start();
                process.waitFor();

请详细说明你的问题