Я могу запускать команды, git add
, git commit
, прямо из Git. Но есть ли какие-либо методы, чтобы я мог запускать команды непосредственно из java.
Не знаю как это описать на русском. Но в Java есть класс Runtime для соответствующей работы.
У него есть метод getRuntime()
, который возвращает соответствующий приложению Runtime
, а также есть метод exec(String command)
, который в отдельном процессе запускает команду, представленную переданной строкой. Возвращаемый объект :py:class::java.lang.Process
и может быть использован для управления выполнением этого процесса. Собственно их и можно использовать. Пример:
Runtime.getRuntime().exec("git add");
Естественно с try/catch
и прочими проверяющими конструкциями
P.S.
Нашел описание методов на русском, чтоб ознакомиться проще было. Источник ilnurgi1.ru:
class java.lang.Runtime
getRuntime() - Возвращает соответсвующий приложению Runtime
exit(int status) public void - Осуществляет завершение программы с кодом завершения status (при использовании этого метода особое внимание нужно уделить обработке исключений - выход будет осуществлен моментально, и в конструкциях try-catch-finally управление в finally передано не будет)
gc() public native void - Сигнализирует сборщику мусора о необходимости запуска
freeMemory() public native long - Возвращает количество свободной памяти. В некоторых случаях это количество может быть увеличено, если вызвать у объекта Runtime метод gc()
totalMemory() public native long - Возвращает суммарное количество памяти, выделенное Java машине. Это количество может из изменяться даже в течении одного запуска, что зависит от реализации платформы на которой запущена Java машина. Так-же, не стоит закладываться на объем памяти, занимаемой одним определенным объектом - эта величина так же зависит от реализации Java машины.
loadLibrary(String libname) public void - Загружает библиотеку с указанным именем. Обычно загрузка библиотек производится следующим образом: в классе, использующем native реализации методов, добавляется статический инициализатор, например:
static {
System.loadLibrary("LibFile");
}
Таким образом, когда класс будет загружен и инициализирован, необходимый код для реализации native методов так-же будет загружен. Если будет произведено несколько вызовов загрузки библиотеки с одним и тем-же именем - произведен будет только первый, а все остальные будут проигнорированы.
load(String filename) public void - Подгружает файл с указанным названием в качестве библиотеки. В принципе, этот метод работает так-же как и метод load(), только принимает в качестве параметра именно название файла, а не библиотеки, тем самым позволяя загрузить любой файл с native кодом.
runFinalization() public void - Производит запуск выполнения методов finalize() у всех объектов, этого ожидающих
exec(String command) public Process - В отдельном процессе запускает команду, представленную переданной строкой. Возвращаемый объект :py:class::java.lang.Process может быть использован для управления выполнением этого процесса.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Недавно начал заниматься в Android StudioПостоянно обращаюсь для решения вопросов на этот ресурс
Возник вопрос, копаюсь долго не могу решить: что-то слетело в студио и java классы во всех проектах не определяются, вместо привычного значка...