Проблема с Runtime.getRuntime().exec() Java

140
23 апреля 2019, 18:10

Пытаюсь запустить команду для командной строки с помощью Runtime.getRuntime().exec.

Вот собственно команда "cmd /C cd C:\Scripts && javac Main.java && java Main"

Вот код всего класса

package sample;
import java.io.*;
public class Executor {
    private String path;
    private String className;
    private String extension;
    private String command;
    boolean saveClassString;
    ProcessBuilder processBuilder;
    public Executor(String extension, String path, String className){
        this.extension = extension;
        this.path = path.replaceAll("\\\\", "\\\\\\\\");
        this.className = className;
    }
    void start()throws Exception{
        command = Main.programSettings.getCommandMap().get(extension).replaceAll("%%", className); 
        command = command.replaceAll("##", path); //"cmd /C cd ## && javac %%.java && java %%" 
        System.out.println(command);
        readData(Runtime.getRuntime().exec(command);
    }
    private void readData(Process run) throws Exception {
        String line;
        BufferedReader inputReader = new BufferedReader(new InputStreamReader(run.getInputStream()));
        BufferedReader outputReader = new BufferedReader(new InputStreamReader(run.getErrorStream()));
        while ((line = inputReader.readLine()) != null) {
            System.out.println(line);
        }
        inputReader.close();
        while ((line = outputReader.readLine()) != null) {
            System.out.println(line);
        }
        outputReader.close();
        run.waitFor();
    }

При запуске выдает следущее:

cmd /C cd C:\Scripts && javac Main.java && java Main  //System.out.print()
javac: file not found: Main.java                   // это уже от Runtime
Usage: javac <options> <source files>              //
use -help for a list of possible options           //
Process finished with exit code 0

Этот класс должен компилировать Файл и вывести на экран результат работы скомпилированного файла, но он это отказывается делать. Если вызывать команду "cmd /C cd C:\Scripts && javac Main.java && java Main" через командную строку, то получается ответ как и при запуске сверху. Если запустить в командной строке команду без "cmd /c" то команда сработает успешно, файл скомпилируется и выведет результат работы, однако runtime.getruntime.exec() отказывается принимать команду без "cmd /c" (вылетает с ошибкой). Пробовал и сохранять команду в bat файл и передавать ProcessBuilder, однако ничего не выходит. Еще большее смятение вызывает то, что в предыдущем проекте я использовал такую же команду и все работало. Помогите пожалуйста решить проблему. Располагается файл C:\Scripts\Main.java

READ ALSO
Помогите с адаптивным гридом

Помогите с адаптивным гридом

Вроде простая задача и скорее всего решение какое то очевидное, но я что-то запуталсяЯ конечно могу что то закостылять индивидуально для...

162
Нужна помощь, с установкой gulp-sass!

Нужна помощь, с установкой gulp-sass!

на самом деле всё установлено, но когда я пишу некоторые стили в mainsass компилируется в main

181
Ckeditor 5: как сделать свой загрузчик файлов

Ckeditor 5: как сделать свой загрузчик файлов

Задача: сделать свой загрузчик файлов в Ckeditor 5Перечитав кучу документации так и не понял, что и куда надо подставить, что бы заработал свой...

162
Подстановка параметров jquery

Подстановка параметров jquery

data: "id= 'category1'", вот нужно чтобы id был равен значению которое берется из $("#cat")val(); вот так не работает data: "id= "+$("#cat")

164