在运行时中编译+执行Java Intellij Idea

时间:2019-07-16 18:33:14

标签: java intellij-idea plugins

我们正试图编写一个INTELLIJ IDEA插件,但是这个问题与插件本身无关。我们正在尝试从插件编译并执行给定的代码。 我们正在使用generalCommandLine来获取参数,其方式与终端相同。

我们尝试了各种参数,但没有成功。

这是我们的代码:

public void actionPerformed(AnActionEvent event) {
        ArrayList<String> cmds = new ArrayList<String>();
        ArrayList<String> cmds2 = new ArrayList<String>();
        cmds.add("javac"); // for compilation
        cmds.add("com/test/Main.java"); // path for java file to compile
        cmds2.add("java"); // for execution
        cmds2.add("com.test.Main"); // package which the compiled file is in (Main.class)
        GeneralCommandLine generalCommandLine = new GeneralCommandLine(cmds);
        GeneralCommandLine generalCommandLine1 = new GeneralCommandLine(cmds2);
        generalCommandLine1.setCharset(Charset.forName("UTF-8"));
        generalCommandLine1.setWorkDirectory("/home/tout/IdeaProjects/test/src");
        generalCommandLine.setCharset(Charset.forName("UTF-8"));
        generalCommandLine.setWorkDirectory("/home/tout/IdeaProjects/test/src");

        System.out.println(generalCommandLine.getWorkDirectory());
        try {
            ProcessHandler processHandler = new OSProcessHandler(generalCommandLine);
            processHandler.startNotify();
            System.out.println("test1");
        } catch (ExecutionException e) {
            e.printStackTrace();
        }
        try {
            ProcessHandler processHandler1 = new OSProcessHandler(generalCommandLine1);
            processHandler1.startNotify();
            System.out.println("test2");
        } catch (ExecutionException e) {
            e.printStackTrace();
        }
    }

generalCommandLine实际上将代码编译为.class,但是generalCommandLine1不执行代码-该代码只是我们在Intellij中创建的项目,该项目创建文件并将其写入。 (创建文件并写入文件的代码很好,因为一旦我们在IntelliJ中运行它,一切都可以正常工作。)

我们在这里想念什么?

0 个答案:

没有答案