【问题标题】:Can i create java GUI application which can run other java programs in it?我可以创建可以在其中运行其他 java 程序的 java GUI 应用程序吗?
【发布时间】:2015-04-23 10:25:59
【问题描述】:

我正在尝试创建一个 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 的方法请告诉我。 我怎样才能为它编写适当的代码?

【问题讨论】:

  • 请告诉我们您已经尝试过什么,我们无法为您编写代码。你应该先尝试,然后当你卡在某个地方时再回来。
  • 在 cmd 失败后,我将程序转换为 jar 文件,然后运行它。代码是:
  • 字符串演示 = "javaw -jar D:\\x.jar"+" "+filetorun;进程 proc = Runtime.getRuntime().exec(demo); BufferedReader br = new BufferedReader(new InputStreamReader(proc.getInputStream()));字符串 f; while((f=br.readLine()) != null) { System.out.println(f); proc.waitFor(); br.close();
  • 贴出有问题的代码,评论不是个好地方。

标签: java swing


【解决方案1】:

是的,还有另一种方法。

不完全确定您要达到什么目的以及为什么,第二个进程应该解析输入并为第一个进程提供结果?

如果您在同一个应用程序中不需要这种父子进程关系,您也可以有两个不同的进程与套接字通信。

您可以避免(并且应该)运行时 - 阅读更多相关信息:

http://www.javaworld.com/article/2071275/core-java/when-runtime-exec---won-t.html

另一种方式:

//对于java你需要传递:"java.exe","-cp","bin","package.class")

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

【讨论】:

    猜你喜欢
    • 2017-04-12
    • 1970-01-01
    • 2012-12-24
    • 2016-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多