Пытаюсь запустить команду для командной строки с помощью 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
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости