我最初编写了名为" Command.java"编译另一个名为" New.java"然后将hello world打印到控制台。但是在执行Command.java之后,我发现它成功编译了#34; New.java"但没有打印" Hello world"在控制台中。这是代码: -
class New
{
public static void main(String[]args)
{
System.out.println("Hello World");
}
}
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代码: -
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但我的第二个版本有效。
答案 0 :(得分:0)
你需要从Java程序中读取系统命令的输出。所以,你编写的第一个程序没有向你显示输出。你读取输出后你的第二个程序工作正常
答案 1 :(得分:0)
每个java应用程序都在自己的控制台中运行。启动程序时看到的控制台属于Command.java。这意味着它只显示Command.java的输出而没有其他内容。 New.java在不同的控制台中运行,在这种情况下,不向您显示。 Command.java的第二个版本读取New.java的输出,然后将其打印到它自己的控制台。