27 октября 2012 г.

Компиляция java-проекта вручную

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

Вкратце процесс сборки состоит из следующих шагов:

  1. Компиляция байт-кода в виде *.class-файлов из исходников.
  2. Упаковка полученных файлов с байт-кодом, а также необходимых конфигурационных файлов в jar-архив.
  3. Добавление в файл MANIFEST.MF внутри архива относительных путей до необходимых библиотек.

Компиляция из исходников в байт-код производится при помощи программы javac, которая входит в JDK. Перейдите в директорию вашего java-проекта и выполните следующую команду, подставляя, где необходимо, ваши значения:
javac -d директория_для_байт_кода -classpath пути_до_необходимых_библиотек -sourcepath директория_с_исходниками  путь_до_класса_с_main

  • Опция -d указывает, куда нужно положить class-файлы.
  • Опция -classpath задаёт набор путей до необходимых в данном проекте файлов сторонних библиотек. Если библиотек несколько, пути разделяются точкой с запятой ";".
  • Опция -sourcepath указывает путь до директории, в которой лежат исходники. У меня она называется "src".
  • В конце следует указать путь до исходника с классом, который содержит метод main.

В результате выполнения этой команды у вас появятся файлы байт-кода. Теперь их нужно упаковать в jar-архив. Перейдите в ту директорию, которую вы указали в опции -d для компиляции проекта. Скопируйте в неё необходимые конфигурационные файлы (например, log4j.xml). Выполните команду:
jar cvf имя_файла_архива .
Опция с - создать архив
Опция v - отображать служебную информацию в процессе создания архива
Опция f - производить вывод не в консоль, а в файловую систему
В качестве имени файла архива можно указать любое имя. Архиву, как правило, даётся расширение jar.

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

В результате вы получите jar-архив, в который буду запакованы файлы байт-кода, дополнительные конфигурационные файлы, а также будет создан стандартный файл /META-INF/MANIFEST.MF - нам его необходимо модифицировать.

Откройте архиватором созданный архив и модифицируйте файл MANIFEST.MF, добавив в него две строки:

Class-Path: пути_до_файлов_библиотек
Main-Class: полное_имя_класса_с_main


В Class-Path следует перечислить все необходимые файлы библиотек с относительными путями до них. Если библиотек несколько, то пути разделяются пробелами. Также рекомендуется положить все эти библиотеки в одну директорию.
В Main-Class нужно указать полное имя класса с методом main (т.е. с указанием пакета, например org.test.SimpleMain).

Внимание! Проследите за тем, чтобы в конце файла MANIFEST.MF была пустая строка (ещё один перевод строки) - это требование спецификации. В противном случае возможна некорректная обработка этого файла.

Сохраните изменения в архиве. Теперь вы можете запустить полученный архив при помощи команды java -jar имя_архива и ваше приложение начнёт свою работу.

1 комментарий:

  1. да есть еще такой вариант https://javahelp.online/osnovy/kompilyatsiya-java-koda-iz-komandnoy-stroki

    ОтветитьУдалить