在java

时间:2016-09-19 08:39:46

标签: java command-line bufferedreader jtextarea

我正在尝试这样做,以便当用户单击按钮时,会出现一个新屏幕并自动运行命令行过程,并且他们能够看到此过程的输出。

我认为我可以使用JTextArea将文字设置为。

这就是我现在所拥有的:

runButton.addActionListener(new ActionListener()
        {
            public void actionPerformed(ActionEvent r)
            {
                JFrame runFrame = new JFrame("Running process...");
                runFrame.setVisible(true);
                runFrame.setSize(500, 400);
                runFrame.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
                runFrame.setLayout(null);
                JTextArea run = new JTextArea();
                run.setBounds(100,50,300,200);
                runFrame.add(run);
                Runtime runtime = Runtime.getRuntime();
                Process process = null;
                try 
                {
                    process = runtime.exec("cat /cmd/h:/testfile");
                } 
                catch (IOException e) 
                {
                    e.printStackTrace();
                }
                InputStream runStream = process.getInputStream();
                InputStreamReader runStreamReader = new InputStreamReader(runStream);
                BufferedReader br = new BufferedReader(runStreamReader);
                String line;
                StringBuilder sb = new StringBuilder();
                try 
                {
                    while ((line = br.readLine()) != null)
                    {
                        sb.append(line);
                    }
                } 
                catch (IOException e) 
                {
                    e.printStackTrace();
                }
                run.setText(sb.toString());
            }
        });

我得到的错误是:

无法运行程序“cat”:CreateProcess error = 2,系统找不到指定的文件

我试图测试打开一个文件来测试它,它只包含随机字母行。

编辑:

我不确定我是否清楚地解释了我需要做什么。 我想要的是在命令行中运行命令以打开文件。然后我希望命令行的结果输出到JTextArea。

编辑2:

我试图将命令更改为“ping riot.de -t”。这将经常ping暴乱服务器并返回响应时间的响应。

运行时,新框架只是黑色,java冻结了。

1 个答案:

答案 0 :(得分:0)

也许你的java应用程序执行的env没有正确的cat cmd路径?你试着为cat命令指定绝对路径?