我有一个类文件说,abc.class是从abc.java编译的 在尝试执行此java程序时,我没有在控制台中获取输出。 我在linux环境下执行了这个文件。 该文件包含一个吸引重要性的行:
Runtime rt = Runtime.getRuntime();
String a = "ls";
Process proc = null;
try {
proc = rt.exec(a);
}
注意:在执行程序时,提示不存在,我认为这可能是'ls'没有通过我的程序执行的原因。我没有收到任何错误。 我担心一旦文件执行,我将在提示符中获取文件列表。 希望我能让所有人了解我的问题。 我可以对这个问题有任何意见。你有价值的
答案 0 :(得分:0)
您的命令应该被执行,但是您的输出不会被打印,因为默认情况下输出不会被定向到您的控制台,为了在控制台上获得输出,您只需要从您的进程获取输入流并需要读取它。
Runtime rt = Runtime.getRuntime();
String a = "ls";
Process proc = null;
try
{
proc = rt.exec(a);
proc.waitFor();
BufferedReader reader = new BufferedReader(new InputStreamReader(proc.getInputStream()));
String line=" ";
while((line=reader.readLine())!=null)
{
output.append(line+"\n");
}
}
答案 1 :(得分:0)
这有效:
Runtime rt = Runtime.getRuntime();
String a = "/bin/ls";
Process proc = rt.exec(a);
proc.waitFor();
InputStream is = proc.getInputStream();
InputStreamReader isr = new InputStreamReader( is );
BufferedReader br = new BufferedReader( isr );
String line;
while( (line = br.readLine() ) != null ){
System.out.println( line );
}
br.close();
// to see errors:
System.out.println( "*** error output ***" );
InputStream isErr = proc.getErrorStream();
InputStreamReader isrErr = new InputStreamReader( isErr );
BufferedReader brErr = new BufferedReader( isrErr );
String line;
while( (line = brErr.readLine() ) != null ){
System.out.println( line );
}
brErr.close();