我正在尝试创建一个java swing应用程序,其中我想使用两个文本框一个用于输入,另一个用于输出过程。 当我单击按钮时,我想在输入文本框中运行代码,输出应该在输出文本框中。
我尝试使用流程构建器。我使用流程构建器打开cmd并在其中运行程序。如果程序只有打印行,它可以正常工作。但是如果程序要求输入它不起作用。
我们可以在eclipse IDE中执行,程序在控制台窗口中运行,我们可以在那时提供输入。
然后我将输入程序转换为jar文件并尝试运行它 代码:
String demo = "javaw -jar D:\\x.jar";
Process proc = Runtime.getRuntime().exec(demo);
BufferedReader br = new BufferedReader(new InputStreamReader(proc.getInputStream()));
String f;
while((f=br.readLine()) != null)
{
System.out.println(f);
}
proc.waitFor();
br.close();
或者有另一种方法没有使用cmd plz告诉我。 我该如何为它编写适当的代码?
答案 0 :(得分:2)
如果第二个进程解析输入并为第一个进程提供结果,那么您是不是完全确定要实现的目标和原因?
如果您不需要在同一个应用程序中使用此父子进程关系,您还可以有两个与套接字通信的不同进程。
您可以避免(并且应该)运行时 - 阅读更多相关信息:
http://www.javaworld.com/article/2071275/core-java/when-runtime-exec---won-t.html
替代方式:
//对于java你需要传递:" java.exe"," -cp"," bin"," package.class&# 34)
ProcessBuilder pb = new ProcessBuilder("myCommand", "myArg1", "myArg2")
您可以使用环境变量传递值,它们可以通过名称访问子进程。
Map<String, String> environementVariable = processBuilder.environment();
environementVariable.put("parameters", "value");
您可以像这样访问它们:
Map<String, String> env = System.getenv();
开始这个过程:
Process process = processBuilder.start();