Автоматизируем компиляцию и запуск программы на Java с помощью BAT файла
Так случилось, что в те редкие минуты свободного от основной работы времени которые я посвящаю изучению языка Java, мне приходится делать это на компьютере на котором не установлено ни каких IDE. Все что имеется под рукой это notepad++ и «допилить» его до удобоваримой формы тоже не получается, т.к. нет возможности устанавливать плагины к нему. Ну да ладно, как говориться — прорвемся. Если вы читаете эту статью, то я думаю у вас есть представление о компиляции файлов из .java в .class и какими командами это делается (если не знаете, читайте тут). Лень матушка, та что «двигатель прогресса», подсказала мне, что надо бы процесс компиляции как-то автоматизировать. Немножко погуглив с небольшим допилом получилось следующее:
- Создаем папку JavaProjects (все следующие шаги будем производить в ней)
- Создаем папку code, в ней мы будем хранить наши файлы с кодом в формате .java
- Создаем папку lib, в ней будем держать подключаемые библиотеки
- Создаем файл compile.bat со следующим кодом:
-
@echo off set x32="c:\указываем путь к javac.exe (в JDK папка bin)" echo Start ...................... Ok if exist com goto start if not exist com goto create :create MD com :start set libs=lib\mylib.jar %x32% -cp %libs% code\*.java cls move code\*.class com\ echo Complete .................... Ok pause
При запуске файла код создаст папку com, скомпилирует с помощью утилиты javac.exe все файлы из папки code в байт код с расширением .class и перенесет их в созданную папку com.
- Создадим файл launch.bat, который будет запускать наши программы из предлагаемого списка:
@echo off if exist choose.txt del /f choose.txt setlocal enabledelayedexpansion set q=1 set papka=com if not exist "%papka%" ( md com. echo Creating COM directory.................OK. echo Please poot youer .CLASS files into COM directory. pause. exit. ) for /f "tokens=*" %%i in ('dir /b "%papka%\*.class"') do ( echo !q!.%%~ni echo !q!;%%~ni>> choose.txt set /a q+=1 ) echo. set /p vibor="Enter number of file: ". echo. for /f "delims=; tokens=1,2" %%i in ('more choose.txt') do ( if "%vibor%"=="%%i" java.exe -classpath %papka% %%j ) del /f choose.txt pause
При запуске данный код создает временный текстовый файл choose.txt в котором будет хранится наш список файлов с расширением .class из папки com. Затем пользователь выбирает файл который необходимо запустить в виртуальной машине Java (попросту — исполнить). С помощью утилиты java.exe происходит запуск, после чего программа удаляет временный файл choose.txt и закрывает консоль.
В принципе на этом все. Разобравшись в коде вы сможете его усовершенствовать и настроить под себя (например можно обойтись без временного текстового файла, сделать множественный выбор файлов из списка и т.д.). На последок, хочу сказать спасибо пользователям форума cyberforum.ru благодаря которым вышеописанный код воплотился в жизнь. Удачи.
Один комментарий
Oleg
Интересный подход. Для тех кто хочет разобраться в цикле for в командной строке введите for /?