Как запустить скрипт из Java

У меня есть скрипт, который является test.sh на Ubuntu. Я хочу запустить его с Java. Я знаю, что мне нужно использовать Runtime.getRuntime().exec();

Не нужно ли заполнять скобку exec местоположением test.sh? Я /home/main/ss/test.sh

Я не получаю сообщений об ошибках, но когда я искал папку, я видел, что этот сценарий не работает. Как я могу это исправить?

Вы действительно должны посмотреть Process Builder . Он действительно построен для такого рода вещей.

  ProcessBuilder pb = new ProcessBuilder("myshellScript.sh", "myArg1", "myArg2"); Map env = pb.environment(); env.put("VAR1", "myValue"); env.remove("OTHERVAR"); env.put("VAR2", env.get("VAR1") + "suffix"); pb.directory(new File("myDir")); Process p = pb.start(); 

Вы пытались напрямую вызвать свой скрипт или указали оболочку? Вам может потребоваться указать оболочку в вызове exec, если она не указана (и не обработана) из первой строки скрипта.

От взгляда на ваше описание, как вы закончили, скрипт не работал:

Я не получаю сообщений об ошибках, но когда я искал папку, я видел, что этот сценарий не работает. Как я могу это исправить?

В заключение, скрипт создает новый файл, и после его запуска с Java его нет.

Возможно, вы предполагаете, что вывод сценария будет, если он отправлен в текущий каталог, заканчивается в каталоге сценария, а не в каталоге, в котором вы запустили приложение Java.

Это может быть Рабочий стол, если вы начинаете свой class с пользовательского интерфейса с помощью значка в качестве стартера, это может быть ваш домашний или проектный каталог, если вы скомпилируете class из руки или каталог, настроенный вашей IDE, если вы разрабатываете с затмением или тому подобным.

Если ваш сценарий записывает абсолютный путь, например /tmp/script.out, вы можете быстро проверить, может ли это быть вашей проблемой.