我们正试图编写一个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中运行它,一切都可以正常工作。)
我们在这里想念什么?