如何使用java运行外部java程序



问题是抽象的。

我想使用java运行java代码,但问题是java代码可能使用(Scanner或其他方法…(从控制台获取输入

import java.util.Scanner;
public class Main{
public static void main(String args[]){
Scanner scanner = new Scanner(System.in);
int i = scanner.nextInt();
System.out.println(i);
}
}

我试着运行下面的程序,但它既没有给我错误,也没有显示任何输出。

import java.util.Scanner;
import java.io.*;
public class MyExec {
public static void main(String[] args)
{
//init shell
ProcessBuilder builder = new ProcessBuilder( "/bin/bash" );
Process p=null;
try {
p = builder.start();
}
catch (IOException e) {
System.out.println(e);
}
//get stdin of shell
BufferedWriter p_stdin = 
new BufferedWriter(new OutputStreamWriter(p.getOutputStream()));
try {
//single execution
p_stdin.write("javac Main.java");
p_stdin.newLine();
p_stdin.flush();
p_stdin.write("java Main.class");
p_stdin.newLine();
p_stdin.flush();
p_stdin.write("1");
p_stdin.newLine();
p_stdin.flush();
}
catch (IOException e) {
System.out.println(e);
}

// finally close the shell by execution exit command
try {
p_stdin.write("exit");
p_stdin.newLine();
p_stdin.flush();
}
catch (IOException e) {
System.out.println(e);
}
// write stdout of shell (=output of all commands)
Scanner s = new Scanner( p.getInputStream() );
while (s.hasNext())
{
System.out.println( s.next() );
}
s.close();
}
}

我也想传递输入如何找出错误,不知道这里出了什么问题

您可以读取如下执行的命令的响应

ProcessBuilder pb = new ProcessBuilder();
pb.command(cmd);
Process proc = pb.start();
proc.waitFor();
InputStream inputStream = proc.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
String responseLine = "";
StringBuilder output = new StringBuilder();
while (( responseLine = reader.readLine())!= null) {
output.append(responseLine + "n");
}

最新更新