cmd打开java时立即打开和关闭

时间:2014-10-05 11:39:48

标签: java cmd

我正在使用Java为Java源文件创建代码编辑器。当我点击RUN菜单时,它会完全打开cmd并运行javac命令,但问题是它会立即关闭,我想要暂停。

这是我的代码:

Runtime rt = Runtime.getRuntime();
try {
    rt.exec("cmd.exe /c start java Maq");
} catch (IOException e1) {
    e1.printStackTrace();
}

如何摆脱这个问题?

4 个答案:

答案 0 :(得分:2)

现在您已确认您确实需要javac并正在使用IDE /编辑器,处理编译错误的正确方法是使用javax.tools.JavaCompiler从JRE进行编译。

JavaCompiler为您提供精确的控制,跨平台功能,并始终存在。您可以查看the JavaDoc以开始使用。这是a nice example的用法。

我亲自将它用于类似项目的IDE,它完全符合您对程序内编译器的期望。

答案 1 :(得分:0)

命令的“start”位将Java与cmd进程分离。

你最好写一个包含这样的东西的批处理脚本:

@echo off
java Maq
pause

然后使用Runtime.exec(...)

调用该批处理文件

答案 2 :(得分:0)

要查看javac的输出,您无法使用Runtime.exec()。请改用ProcessBuilder。您的代码可能如下所示:

ProcessBuilder pb = new ProcessBuilder("javac", "Maq.java");
pb.directory(new File("/path/to/source/code/"));

Process p = pb.start();
InputStream in = p.getInputStream(); // this is connected to the System.out from javac
int exit = p.waitFor(); // wait for javac to finish

StringBuilder text = new StringBuilder();
char[] buf = new char[1024]; int read;
while ((read = in.read(buf)) != -1)
    text.append(new String(buf, 0, read));
text.append("\n\njavac returned with exit code ").append(exit);

// display text - it now contains javac's output and its exit code
JFrame f = new JFrame("javac's output");
JTextPane tp = new JTextPane();
tp.setText(text.toString());
tp.setEditable(false);
f.setContentPane(tp);
f.setSize(500, 400); // or whatever
f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
f.setVisible(true);

答案 3 :(得分:0)

来自this问题的回答帮助了我:)。

Runtime rt = Runtime.getRuntime();
                try {
                    rt.exec("cmd.exe /c cd /d d: & start cmd.exe /k javac Maq.java");
                } catch (IOException e1) {
                    e1.printStackTrace();
                }