Как создать bat файл java

Обновлено: 07.07.2024

Кажется, что я даже не могу получить мой пакетный файл для выполнения. У меня кончились идеи.

это то, что у меня есть в Java:

ранее у меня был файл Python Sconscript, который я хотел запустить, но поскольку это не сработало, я решил, что вызову скрипт через пакетный файл, но этот метод еще не был успешным.

иногда время процесса выполнения потока выше, чем время процесса ожидания потока JVM, это происходит, когда процесс, который вы вызываете, занимает некоторое время для обработки, используйте команду waitFor () следующим образом:

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

для запуска пакетных файлов с помощью java, если это вы говорите.

это должно помочь.

ProcessBuilder это Java 5/6 способ запуска внешних процессов.

исполняемый файл, используемый для запуска пакетных скриптов cmd.exe использует /c флаг для указания имени пакетного файла для запуска:

теоретически вы также должны иметь возможность запускать Scons таким образом, хотя я не проверял это:

EDIT: Амара, вы говорите, что это не работает. Ошибка, которую вы указали, - это ошибка, которую вы получите при запуске Java из терминала Cygwin в окне Windows; это то, что вы делаете? Проблема в том, что Windows и Cygwin имеют разные пути, поэтому версия Windows Java не найдет исполняемый файл scons на вашем пути Cygwin. Я могу объяснить дальше, если это окажется вашей проблемой.

протестировано с jdk1.5 и jdk1. 6

это работало хорошо для меня, надеюсь, что это помогает другим тоже. чтобы получить это, я боролся больше дней. : (

У меня была та же проблема. Однако иногда CMD не удалось запустить мои файлы. Вот почему я создаю темп.летучая мышь на моем рабочем столе, рядом с этим темпом.bat собирается запустить мой файл, а затем временный файл будет удален.

Я знаю, что это больший код, однако работал для меня в 100%, когда даже во время выполнения.getRuntime().метод exec() не удалось.

В этом уроке мы рассмотрим, как выполнять команды оболочки, файлы bat и sh на Java. Мы рассмотрим примеры для всех подходов exec() и ProcessBuilder.

Вступление

В этой статье мы рассмотрим, как мы можем использовать классы Runtime и ProcessBuilder для выполнения команд и сценариев оболочки с помощью Java.

Мы используем компьютеры для автоматизации многих вещей в нашей повседневной работе. Системные администраторы постоянно выполняют множество команд, некоторые из которых очень повторяющиеся и требуют минимальных изменений в промежутках между запусками.

Этот процесс также созрел для автоматизации. Нет необходимости запускать все вручную. Используя Java, мы можем запускать одну или несколько команд оболочки, выполнять сценарии оболочки, запускать терминал/командную строку, устанавливать рабочие каталоги и управлять переменными среды с помощью основных классов.

Время выполнения.exec()

Класс Runtime в Java-это класс высокого уровня, присутствующий в каждом отдельном приложении Java. Через него само приложение взаимодействует с окружающей средой, в которой оно находится.

Извлекая среду выполнения, связанную с нашим приложением, с помощью метода getRuntime () , мы можем использовать метод exec() для прямого выполнения команд или запуска файлов .bat /|. sh .

Метод exec() предлагает несколько перегруженных вариантов:

Стоит отметить, что эти процессы запускаются извне из интерпретатора и будут зависеть от системы.

Что также стоит отметить, так это разницу между Строковой командой и Строковой командой cmdArray[] . Они достигают одного и того же. Команда | в любом случае разбивается на массив, поэтому использование любого из этих двух должно привести к одинаковым результатам.

Вам решать, хотите ли вы использовать exec("директория/папка") или exec(новая строка[] .

Давайте приведем несколько примеров, чтобы увидеть, чем эти перегруженные методы отличаются друг от друга.

Выполнение команды из строки

Давайте начнем с самого простого подхода из этих трех:

Запуск этого кода приведет к выполнению команды, которую мы предоставили в строковом формате. Однако мы ничего не видим, когда запускаем это.

Чтобы проверить, правильно ли это выполнено, мы захотим получить доступ к объекту process . Давайте воспользуемся BufferedReader , чтобы взглянуть на то, что происходит:

Теперь, когда мы запускаем этот метод после метода exec () , он должен дать что-то вроде:

Имейте в виду, что нам придется извлекать информацию о процессе из экземпляров Process , когда мы будем рассматривать другие примеры.

Укажите рабочий каталог

Если вы хотите запустить команду, скажем, из определенной папки, мы бы сделали что-то вроде:

Здесь мы предоставили методу exec() команду , null для новых переменных среды и новый файл () , который установлен в качестве вашего рабочего каталога.

Стоит отметить добавление cmd/c перед такой командой, как dir .

Поскольку я работаю в Windows, это открывает cmd и /c выполняет последующую команду. В данном случае это реж. .

Причина, по которой это не было обязательным для примера ping , но является обязательным для этого примера, хорошо ответил пользователь SO.

Запуск предыдущего фрагмента кода приведет к:

Давайте посмотрим, как мы могли бы предоставить предыдущую команду в нескольких отдельных частях, а не в одной строке:

Запуск этого фрагмента кода также приведет к:

Какой из них вы хотели бы использовать, сводится только к тому, какой из них вы считаете более читабельным.

Использование Переменных Среды

Давайте посмотрим, как мы можем использовать переменные среды:

Мы можем предоставить столько переменных среды, сколько захотим, в строковом массиве. Здесь мы только что напечатали значение var1 , используя echo .

Выполнение этого кода вернет:

Запуск файлов .bat и .sh

Иногда просто гораздо проще выгрузить все в файл и запустить этот файл вместо того, чтобы добавлять все программно.

В зависимости от вашей операционной системы вы будете использовать файлы .bat или|/. sh|/. Давайте создадим его с содержимым:

Git Essentials

Ознакомьтесь с этим практическим руководством по изучению Git, содержащим лучшие практики и принятые в отрасли стандарты. Прекратите гуглить команды Git и на самом деле изучите это!

Тогда давайте воспользуемся тем же подходом, что и раньше:

Это откроет командную строку и запустит файл .bat в заданном нами рабочем каталоге.

Запуск этого кода, несомненно, приведет к:

Теперь, когда все перегруженные exec() подписи устранены, давайте рассмотрим класс ProcessBuilder и то, как мы можем выполнять команды с его помощью.

Конструктор процессов

ProcessBuilder является базовым механизмом, который выполняет команды при использовании метода Runtime.getRuntime().exec() :

JavaDocs для Время выполнения класс

Взглянув на то, как ProcessBuilder принимает наши входные данные из метода exec() и запускает команду, мы также получаем хорошее представление о том, как ее использовать.

Он принимает строку [] cmdarray , и этого достаточно, чтобы запустить его. В качестве альтернативы мы можем предоставить ему дополнительные аргументы, такие как String[] envp и File dir .

Давайте рассмотрим эти варианты.

ProcessBuilder: Выполнение команды из строк

Вместо того, чтобы предоставлять одну строку , такую как cmd/c dir , в этом случае нам придется разбить ее. Например, если бы мы хотели перечислить файлы в C:/Users каталог, как и раньше, мы бы сделали:

Чтобы фактически выполнить Процесс , мы запускаем команду start() и присваиваем возвращаемое значение экземпляру Процесса .

Запуск этого кода приведет к:

Однако этот подход ничем не лучше предыдущего. Что полезно в классе ProcessBuilder , так это то, что он настраивается. Мы можем устанавливать вещи программно, а не только с помощью команд.

ProcessBuilder: Укажите рабочий каталог

Вместо того, чтобы указывать рабочий каталог с помощью команды, давайте установим его программно:

Здесь мы установили рабочий каталог таким же, как и раньше, но мы удалили это определение из самой команды. Выполнение этого кода даст тот же результат, что и в предыдущем примере.

ProcessBuilder: Переменные среды

Используя методы ProcessBuilder , легко получить список переменных среды в виде Карты . Также легко установить переменные среды, чтобы ваша программа могла их использовать.

Давайте получим переменные среды, доступные в настоящее время, а затем добавим некоторые для последующего использования:

Здесь мы упаковали возвращенные переменные среды в Map и запустили forEach() на нем, чтобы распечатать значения на нашей консоли.

Выполнение этого кода приведет к получению списка переменных среды, имеющихся на вашем компьютере:

Теперь давайте добавим переменную среды в этот список и будем использовать ее:

Запуск этого кода приведет к:

Конечно, как только программа завершит работу, эта переменная не останется в списке.

ProcessBuilder: Запуск файлов .bat и .sh

Если вы хотите снова запустить файл, мы просто предоставим экземпляру ProcessBuilder необходимую информацию:

Выполнение этого кода приводит к открытию командной строки и выполнению файла .bat .:

Вывод

В этой статье мы рассмотрели примеры выполнения команд оболочки на Java. Для этого мы использовали классы Runtime и ProcessBuilder .

Используя Java, мы можем запускать одну или несколько команд оболочки, выполнять сценарии оболочки, запускать терминал/командную строку, устанавливать рабочие каталоги и управлять переменными среды с помощью основных классов.

У меня есть файл JAR с именем helloworld.jar . Чтобы запустить его, я выполняю следующую команду в окне командной строки:

Это работает нормально, но как мне выполнить его двойным щелчком вместо этого? Нужно ли устанавливать какое-либо программное обеспечение?

Самый простой путь - это обновление или переустановка Java Runtime Environment (JRE).

я думаю, что самый простой способ - это щелкнуть правой кнопкой мыши любой файл jar> открыть с помощью и выбрать «среда выполнения Java». :) при этом всегда выдает мне эту ошибку "Java платформа SE двоичная перестала работать" . Кто-нибудь может помочь, в чем может быть проблема? @Faizan - Ваша проблема звучит как отдельная проблема. Я вижу несколько результатов SO и Google для "Бинарная платформа Java Java перестала работать". Я бы проверил это. в win 7 нет вкладки «Типы файлов» в параметрах папок

В Windows Vista или Windows 7 ручной редактор сопоставления файлов был удален.

Самый простой способ - запустить Jarfix , крошечный, но мощный бесплатный инструмент. Просто запустите его, и ваши Java-приложения вернутся . снова дважды щелкните мышью.

Спасибо за совет, если бы только был способ избавиться от этих маленьких (не) «пригодных для использования» новых коробок

Если вам нужно распространить файл .jar и сделать его работоспособным на компьютерах Windows других людей, вы можете создать простой файл .bat, например, в командной строке:

и поместите файл .bat в тот же каталог, что и ваш файл .jar.

Но как выполняется .bat? Будет ли это той же стратегией, чтобы приложение Java открывало сеанс командной строки? Ну, нет, вы бы просто открыть файл летучей мыши. Я не уверен, что понимаю ваш вопрос.

Если у вас есть файл jar с именем Example.jar, следуйте этим правилам:

  1. Открыть notepad.exe
  2. Напишите : java -jar Example.jar
  3. Сохраните это с расширением .bat
  4. Скопируйте его в каталог, в котором находится .jar файл
  5. Дважды щелкните по нему, чтобы запустить .jar файл
1) Это не будет работать на Mac. или Unix. 2) Создает ненужный файл. 3) Лучшие ответы были предоставлены более 2 лет назад. 4) И это слово «ты». Отличный способ запустить банку на Windows! Он также не скрывает ввод командной строки, поэтому я смог понять, почему мой jar не работает так, как я думал. Спасибо.

Интересный побочный эффект этого вызывает проблему при запуске запускаемых файлов JAR в командной строке.

Если вы попробуете (в командной строке):

Нет радости, потому что это переводится на следующее (что не работает):

Тем не менее, следующая команда работает:

Если вы измените связь в файловом менеджере, как описано выше:

Затем вы можете ввести:

в командной строке и теперь он будет работать!

РЕДАКТИРОВАТЬ: (Однако вы получите черное окно консоли при запуске Java-приложения на основе формы (не консоль), так что это не идеальное решение)

Если вы запустите эти jar-файлы, дважды щелкнув их в окнах, параметры не будут переданы, поэтому ваш Java-код должен обрабатывать исключение переполнения стека и включать в конце функцию «нажать клавишу», иначе окно просто исчезнет.

Чтобы передать параметр в windows, вы должны создать ярлык для файла JAR, который включает в себя параметр в целевой строке (щелкните правой кнопкой мыши по ярлыку и выберите свойства), вы не можете добавлять параметры к самому значку файла JAR в этом путь.

Здесь нет единого согласованного решения, но у вас будет такая же проблема с любым другим консольным приложением.

Существует бесплатное приложение для Windows под названием «bat to exe», которое можно использовать для создания exe-файла из .bat-файла с соответствующей командной строкой в ​​нем. Вы также можете вставить jar-файл в исполняемый файл с этим приложением и заставить его очистить его после завершения работы, так что это может быть более элегантным решением.

У меня есть файл JAR с именем helloworld.jar . Чтобы запустить его, я выполняю следующую команду в окне командной строки:

Это работает нормально, но как мне выполнить его двойным щелчком вместо этого? Нужно ли устанавливать какое-либо программное обеспечение?

Самый простой путь - это обновление или переустановка Java Runtime Environment (JRE).

я думаю, что самый простой способ - это щелкнуть правой кнопкой мыши любой файл jar> открыть с помощью и выбрать «среда выполнения Java». :) при этом всегда выдает мне эту ошибку "Java платформа SE двоичная перестала работать" . Кто-нибудь может помочь, в чем может быть проблема? @Faizan - Ваша проблема звучит как отдельная проблема. Я вижу несколько результатов SO и Google для "Бинарная платформа Java Java перестала работать". Я бы проверил это. в win 7 нет вкладки «Типы файлов» в параметрах папок

В Windows Vista или Windows 7 ручной редактор сопоставления файлов был удален.

Самый простой способ - запустить Jarfix , крошечный, но мощный бесплатный инструмент. Просто запустите его, и ваши Java-приложения вернутся . снова дважды щелкните мышью.

Спасибо за совет, если бы только был способ избавиться от этих маленьких (не) «пригодных для использования» новых коробок

Если вам нужно распространить файл .jar и сделать его работоспособным на компьютерах Windows других людей, вы можете создать простой файл .bat, например, в командной строке:

и поместите файл .bat в тот же каталог, что и ваш файл .jar.

Но как выполняется .bat? Будет ли это той же стратегией, чтобы приложение Java открывало сеанс командной строки? Ну, нет, вы бы просто открыть файл летучей мыши. Я не уверен, что понимаю ваш вопрос.

Если у вас есть файл jar с именем Example.jar, следуйте этим правилам:

  1. Открыть notepad.exe
  2. Напишите : java -jar Example.jar
  3. Сохраните это с расширением .bat
  4. Скопируйте его в каталог, в котором находится .jar файл
  5. Дважды щелкните по нему, чтобы запустить .jar файл
1) Это не будет работать на Mac. или Unix. 2) Создает ненужный файл. 3) Лучшие ответы были предоставлены более 2 лет назад. 4) И это слово «ты». Отличный способ запустить банку на Windows! Он также не скрывает ввод командной строки, поэтому я смог понять, почему мой jar не работает так, как я думал. Спасибо.

Интересный побочный эффект этого вызывает проблему при запуске запускаемых файлов JAR в командной строке.

Если вы попробуете (в командной строке):

Нет радости, потому что это переводится на следующее (что не работает):

Тем не менее, следующая команда работает:

Если вы измените связь в файловом менеджере, как описано выше:

Затем вы можете ввести:

в командной строке и теперь он будет работать!

РЕДАКТИРОВАТЬ: (Однако вы получите черное окно консоли при запуске Java-приложения на основе формы (не консоль), так что это не идеальное решение)

Если вы запустите эти jar-файлы, дважды щелкнув их в окнах, параметры не будут переданы, поэтому ваш Java-код должен обрабатывать исключение переполнения стека и включать в конце функцию «нажать клавишу», иначе окно просто исчезнет.

Чтобы передать параметр в windows, вы должны создать ярлык для файла JAR, который включает в себя параметр в целевой строке (щелкните правой кнопкой мыши по ярлыку и выберите свойства), вы не можете добавлять параметры к самому значку файла JAR в этом путь.

Здесь нет единого согласованного решения, но у вас будет такая же проблема с любым другим консольным приложением.

Существует бесплатное приложение для Windows под названием «bat to exe», которое можно использовать для создания exe-файла из .bat-файла с соответствующей командной строкой в ​​нем. Вы также можете вставить jar-файл в исполняемый файл с этим приложением и заставить его очистить его после завершения работы, так что это может быть более элегантным решением.

Читайте также: