执行从 java 中的另一个程序打印 "hello world" 的程序
Execute a program that prints "hello world" from another program in java
我最初编写了名为 "Command.java" 的程序,该程序编译了另一个名为 "New.java" 的程序,该程序在执行 Command.java 之后将 hello world 打印到 console.But ,我发现它成功编译了 "New.java" 但没有在 console.Here 中打印 "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 但我的第二个版本有效。
您需要从您的 Java program.So 读取系统命令的输出,您编写的第一个程序没有向您显示 output.Your 第二个程序运行良好,因为您读取输出
每个 java 应用程序都在其自己的控制台中运行。启动程序时看到的控制台属于 Command.java。这意味着它只会显示 Command.java 的输出,而不会显示其他任何内容。 New.java 在不同的控制台中运行,在这种情况下不会向您显示。 Command.java 的第二个版本从 New.java 读取输出,然后将其打印到它自己的控制台。
我最初编写了名为 "Command.java" 的程序,该程序编译了另一个名为 "New.java" 的程序,该程序在执行 Command.java 之后将 hello world 打印到 console.But ,我发现它成功编译了 "New.java" 但没有在 console.Here 中打印 "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 但我的第二个版本有效。
您需要从您的 Java program.So 读取系统命令的输出,您编写的第一个程序没有向您显示 output.Your 第二个程序运行良好,因为您读取输出
每个 java 应用程序都在其自己的控制台中运行。启动程序时看到的控制台属于 Command.java。这意味着它只会显示 Command.java 的输出,而不会显示其他任何内容。 New.java 在不同的控制台中运行,在这种情况下不会向您显示。 Command.java 的第二个版本从 New.java 读取输出,然后将其打印到它自己的控制台。