【问题标题】:get string from outside run programm从外部运行程序获取字符串
【发布时间】:2011-05-31 02:20:07
【问题描述】:

我有带有文本字段和按钮的 jsp 页面。我也有另一个项目的罐子。 当我单击按钮时,将调用 jar 的 MAIN.class 并且程序在独立窗口(JFrame)中运行。 用户完成程序并退出后,我需要获取退出时生成的程序字符串并将其粘贴到文本框中(该字符串是 HTML 代码)

还有其他人遇到这个问题并有解决方案吗? 谢谢 亚历克斯

【问题讨论】:

  • 你的问题我不清楚,能不能详细点I need to get the String of program that is generated on exit and paste it into the textbox (The String is HTML code)
  • 确保您了解在服务器计算机上启动应用程序与在客户端计算机上启动应用程序之间的区别。您的问题表明您可能有些困惑。至于在客户端做事,在applet 或JWS 启动框架中生成HTML 的部分可能会更好。其中任何一个都可以直接与服务器通信,然后 HTML 表单就变得多余了。

标签: java javascript eclipse jsp servlets


【解决方案1】:

如果您的“来自另一个项目的 jar”将其输出打印到标准输出。您可以使用以下代码在您的 servlet 中获取输出。

          try {
                Runtime rt = Runtime.getRuntime();
                //Process pr = rt.exec("cmd /c dir");
                Process pr = rt.exec("{EXTERNAL_JAR_EXECUTE_COMMAND}");

                BufferedReader input = new BufferedReader(new InputStreamReader(pr.getInputStream()));

                String line=null;

                while((line=input.readLine()) != null) {
                    System.out.println(line);
                }

                int exitVal = pr.waitFor();

            } catch(Exception e) {
                System.out.println(e.toString());
                e.printStackTrace();
            }

【讨论】:

  • 很好用!但是如何在退出 JFRAME 时将字符串发送到缓冲区?我试图写入缓冲区但没有任何反应,代码停留在 while 循环中?谢谢
  • 它是如何保持的?代码会一直保留到读取行完成。我认为关闭此问题并使用您的代码在一个新问题中提出您的问题,以便我们可以根据您的代码为您提供帮助。
  • 好吧,我想通了:ByteBuffer bb= ByteBuffer.wrap(out.getBytes());我的字符串在哪里 但是您的代码正在等待 readline()=null!我已经尝试将 null 发送到 BUFFER 但没有任何反应。那么我如何结束这个循环呢?谢谢
  • 可能正在等待程序结束或关闭连接。或者,您可以发送自己的结束循环字符串来中断循环
【解决方案2】:

这在生产环境中是行不通的。 Java 代码在网络服务器(服务器端)执行,HTML 代码在网络浏览器(客户端)执行。基本上,Swing 的东西只会在网络服务器上执行,而不是在网络浏览器上。只有当网络服务器和网络浏览器在物理上同时运行在同一台机器上时(就像您在本地开发时一样),它才会起作用。

将其包装在Applet 中,该Applet 与 HTTP servlet 通信,或者只是将 Swing 内容转换为 HTML,这样您就不必为此烦恼了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-19
    • 1970-01-01
    相关资源
    最近更新 更多