Я не могу запускать несколько команд, используя символы «&&», «&», «||», «;» Я проверил почти каждый вопрос, который задавал этот вопрос, и все еще не мог найти ответа на свою проблему. Я могу успешно выполнить одну команду в командной оболочке java, но не более 1. Заранее благодарим за помощь!
try {
Process process = Runtime.getRuntime().exec("g++ " + projPath +" -o " + name + " && ./" + name);
StringBuilder output = new StringBuilder();
BufferedReader reader = new BufferedReader(
new InputStreamReader(process.getInputStream()));
BufferedReader errinput = new BufferedReader(
new InputStreamReader(process.getErrorStream()));
String line;
String err;
while ((line = reader.readLine()) != null) {
output.append(line + "\n");
}
while ((err = errinput.readLine()) != null) {
output.append(err + "\n");
}
int exitVal = process.waitFor();
if (exitVal == 0) {
acc.setExpandedPane(pane1);
txt.setStyle("-fx-text-fill: black;");
txt.setText(output.toString());
} else {
acc.setExpandedPane(pane1);
txt.setStyle("-fx-text-fill: red;");
txt.setText(output.toString());
}
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}




Java не предоставляет оболочка, он просто разбивает предоставленную строку на слова и передает ее в качестве аргументов исполняемому файлу, указанному как первое слово.
Попробуйте передать команду /bin/bash (или другой оболочке по вашему выбору):
final String innerCommand = "g++ " + projPath +" -o " + name + " && ./" + name;
final String[] command = {"/bin/bash", "-c", innerCommand};
final Process process = Runtime.getRuntime().exec(command);
Хорошо, спасибо, это сработало! Извините, мне было трудно найти это в Интернете.