命令通过命令行运行,但在使用ProcessBuilder时无法运行

时间:2018-12-02 18:51:22

标签: java javac processbuilder

我正在编写一个程序,其中包含一个功能,用户可以在其中将Java代码输入文本框中并能够编译和运行它。我得到的错误是:enter image description here

顶部显示的两个目录是正确的,并且当我通过命令提示符从同一工作目录手动进行操作时,该命令有效。我正在使用Windows 10,这也是代码:

public Process compile() throws IOException {
    save(); //saves changes to source file
    System.out.println(file.getCanonicalPath());
    ProcessBuilder processBuilder = new ProcessBuilder("javac", file.getCanonicalPath());
    processBuilder.directory(new File(settingsFile.getJdkPath()));
    System.out.println(processBuilder.directory());
    Process process = processBuilder.start(); //Throws exception
    this.compiledFile = new File(file.getParentFile(), file.getName().replace(".java", ".class"));
    return process;
}

要编译的文件:enter image description here

工作目录:enter image description here

1 个答案:

答案 0 :(得分:2)

使用此代码,我能够在桌面上将Test.java文件编译成Test.class文件。

Please, Enter The File Directory Of The File You Want To Open:C://Users//Tiffany//eclipse-workspace//Region1.txt

BAH, 1, 1
CAYM, 3, 7
CUBA, 5, 5
JAM, 5, 7
TCI, 7, 2
HAITI, 7, 5
DR, 8, 5

Capture

使用import java.io.IOException; public class App { public static Process compile() throws IOException { String myFilePath = "C:\\Users\\redacted\\Desktop\\Test.java"; String javacPath = "C:\\Program Files\\Java\\jdk1.8.0_171\\bin\\javac.exe"; ProcessBuilder processBuilder = new ProcessBuilder(javacPath, myFilePath); return processBuilder.start(); } public static void main(String[] args) throws IOException { Process process = compile(); } } 也可以,但这可能是因为我的JDK bin位于我的PATH变量上。

ProcessBuilder构造函数调用中的路径或权限有问题。