【发布时间】:2009-02-14 04:50:32
【问题描述】:
我有一个运行此代码的 jar 文件:
public class InputOutput {
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
boolean cont = true;
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
while (cont) {
System.out.print("Input something: ");
String temp = in.readLine();
if (temp.equals("end")) {
cont = false;
System.out.println("Terminated.");
}
else
System.out.println(temp);
}
}
}
我想编写另一个 java 类来执行这个 jar 文件并可以获取输入并将输出发送给它。是否可以?我目前的代码是这样的,但它不起作用:
public class JarTest {
/**
* Test input and output of jar files
* @author Jack
*/
public static void main(String[] args) {
try {
Process io = Runtime.getRuntime().exec("java -jar InputOutput.jar");
BufferedReader in = new BufferedReader(new InputStreamReader(io.getInputStream()));
OutputStreamWriter out = new OutputStreamWriter(io.getOutputStream());
boolean cont = true;
BufferedReader consolein = new BufferedReader(new InputStreamReader(System.in));
while (cont) {
String temp = consolein.readLine();
out.write(temp);
System.out.println(in.readLine());
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
感谢您的帮助
【问题讨论】:
-
哪个部分不工作?你用的是什么平台?
-
我使用的是 Linux。我需要将这个 jar 放在一个单独的进程中,因为对于实际程序,我使用的是别人的 jar,而我没有源代码。该程序在给定特定输入时输出文本。这就是我创建 IntputOutput 来反映 jar 行为的原因。
-
我在 Process io = Runtime.getRuntime().exec("java -jar InputOutput.jar"); 之后添加了 io.waitFor()我发现程序在运行 jar 文件后就终止了。为什么要这样做?
标签: java input executable-jar