我试图在Mac上运行Java上的“tar”命令。我注意到这个命令被卡住了。基本上,文件大小不会增长,命令也不会返回。但是,如果我运行较小的directiry,它工作正常。使用Java的Mac(Unix)上运行命令 - 卡住
这里是我的代码:
try
{
Runtime rt = Runtime.getRuntime();
Process process = new ProcessBuilder(new String[]{"tar","-cvzf",compressFileName+" "+all_dirs}).start();
InputStream stdin2 = process.getInputStream();
InputStreamReader isr2 = new InputStreamReader(stdin2);
BufferedReader br2 = new BufferedReader(isr2);
String line2 = null;
System.out.println("<OUTPUT>");
while ((line2 = br2.readLine()) != null)
System.out.println(line2);
System.out.println("</OUTPUT>");
int exitVal3 = process.waitFor();
System.out.println("Process exitValue .....: " + exitVal3);
} catch (Throwable t)
{
t.printStackTrace();
}
我也试过:
String tile_command="tar -cvzf file.tar.gz dire_to_compress ";
String[] tile_command_arr= new String[]{"bash","-c",tile_command};
try
{
Runtime rt = Runtime.getRuntime();
Process proc2 = rt.exec(tile_command_arr);
InputStream stdin2 = process.getInputStream();
InputStreamReader isr2 = new InputStreamReader(stdin2);
BufferedReader br2 = new BufferedReader(isr2);
String line2 = null;
System.out.println("<OUTPUT>");
while ((line2 = br2.readLine()) != null)
System.out.println(line2);
System.out.println("</OUTPUT>");
int exitVal3 = process.waitFor();
System.out.println("Process exitValue for tiling .....: " + exitVal3);
} catch (Throwable t)
{
t.printStackTrace();
}
目录有多大?您的JVM仅限于多少内存? – alfasin
对于任何目录,这看起来好像根本不应该工作。你确定你获得了*任何*输入的零退出值吗? – RealSkeptic
目录大小为10GB ...我运行Java时未指定内存参数 – user836026