简体   繁体   中英

Command Works Through Command Line, but Not When Using ProcessBuilder

I'm writing a program that includes a feature where the user can type in Java code into a text box and be able to compile and run it. The error I get is: 在此处输入图片说明

The two directories shown at the top are correct, and the command works when I do it manually through command prompt from the same working directory. I'm using Windows 10, and also here's the code:

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;
}

File to compile: 在此处输入图片说明

Working directory: 在此处输入图片说明

Using this code, I was able to compile a Test.java file into a Test.class file on my Desktop.

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();

    }
}

捕获

Using String javacPath = "javac.exe"; also worked, but that could be because my JDK bin is on my PATH variable.

There is something wrong with your paths or permissions in the ProcessBuilder constructor call.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM