Автоматизируем компиляцию и запуск программы на Java с помощью BAT файла

JavaLogoТак случилось, что в те редкие минуты свободного от основной работы времени которые я посвящаю изучению языка Java, мне приходится делать это на компьютере на котором не установлено ни каких IDE. Все что имеется под рукой это notepad++ и «допилить» его до удобоваримой формы тоже не получается, т.к. нет возможности устанавливать плагины к нему. Ну да ладно, как говориться — прорвемся. Если вы читаете эту статью, то я думаю у вас есть представление о компиляции файлов из .java в .class и какими командами это делается (если не знаете, читайте тут). Лень матушка, та что «двигатель прогресса», подсказала мне, что надо бы процесс компиляции как-то автоматизировать. Немножко погуглив с небольшим допилом получилось следующее:

  1. Создаем папку JavaProjects (все следующие шаги будем производить в ней)
  2. Создаем папку code, в ней мы будем хранить наши файлы с кодом в формате .java
  3. Создаем папку lib, в ней будем держать подключаемые библиотеки
  4. Создаем файл compile.bat со следующим кодом:
  5. @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.

  6. Создадим файл 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 /?

Оставить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *