Execute a program that prints “hello world” from another program in java
我最初编写了一个名为"命令.java"的程序,编译了另一个名为"NeX.java"的程序,它将Hello World打印到控制台。但是在执行命令Java.java之后,我发现它成功地编译了"NeX.java",但没有在控制台上打印"Hello World"。下面是代码:
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | import java.io.*; class Command { public static void main(String[]args)throws IOException { Runtime r=Runtime.getRuntime(); try { Process p=r.exec("cmd pushd C:\\Users\\Admin\\Desktop"); p=r.exec(""E:\\jdk1.7.0_11\\bin\\javac.exe" New.java"); p.waitFor(); p=r.exec(""E:\\jdk1.7.0_11\\bin\\java.exe" New"); p.waitFor(); } catch(Exception e) { System.out.println(e.getMessage()); } } |
号
}
但是,在对command.java进行了一些更改之后,它工作了…..下面是新的command.java代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | import java.io.*; class Command { public static void main(String[]args)throws IOException { Runtime r=Runtime.getRuntime(); try { Process p=r.exec("cmd pushd C:\\Users\\Admin\\Desktop"); p=r.exec(""E:\\jdk1.7.0_11\\bin\\javac.exe" New.java"); p.waitFor(); p=r.exec(""E:\\jdk1.7.0_11\\bin\\java.exe" New"); p.waitFor(); InputStream in= p.getInputStream(); BufferedReader br=new BufferedReader(new InputStreamReader(in)); System.out.println(br.readLine()); } catch(Exception e) { System.out.println(e.getMessage()); } } |
}
现在我的问题是,为什么我以前的command.java程序没有打印hello world,但我的第二个版本工作正常。
每个Java应用程序都在自己的控制台中运行。启动程序时看到的控制台属于command.java。这意味着它只显示command.java的输出,而不显示其他内容。new.java在不同的控制台中运行,在本例中不会显示给您。第二个版本的command.java从new.java读取输出,然后将其打印到自己的控制台。
你需要从Java程序中读取系统命令的输出。因此,你编写的第一个程序没有显示输出。