我可以创建可以运行其他java程序的java GUI应用程序吗?

时间:2015-04-23 10:26:00

标签: java swing

我正在尝试创建一个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告诉我。 我该如何为它编写适当的代码?

1 个答案:

答案 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();