Компиляция java кода без использования ide (одного класса, нескольких, создание jar-файла).
Пусть, исходный код программы находится в файле Test.java по пути:
project-dir/ Test.java
Имя файла с исходным кодом должно совпадать с именем класса (class Test -> Test.java).
// Test.java
public class Test {
public static void main(String[] args) {
System.out.println("Run Test");
}
}
Компилируем файл Test.java в файл с байт-кодом Test.class командой:
Файл Test.class появится рядом с Test.java:
project-dir/ Test.java Test.class
Запускаем программу командой:
Для работы с несколькими классами нужен classpath. Он похож на файловую систему, в которой содержатся классы, а функции папок выполняют пакеты (packages).
Отделим файлы исходного кода (каталог src/) от скомпилированных файлов (bin/). Например, в пакете src находится два класса Box и BoxMachine.
// Box.java
package src;
public class Box {
private double size;
public Box(double size) {
this.size = size;
}
public String toString() {
return "Box have size " + size;
}
}
// BoxMachine.java
package src;
public class BoxMachine {
public static void main(String[] args) {
for (int i = 0; i < 5; i++) {
System.out.println(new Box(Math.random() * 10));
}
}
}
Все это образует файловую структуру:
project-dir/
src/
Box.java
BoxMachine.java
Чтобы скомпилировать эту группу классов, необходимо из главного каталога (в котором лежит src/ каталог) выполнить команду:
$ javac -d bin ./src/* где: -d - флаг, после которого следует указать... bin - ...куда попадут скомпилированные файлы ./src/ - расположение исходных файлов * - указывает, что необходимо скомпилировать все файлы
Теперь скомпилированные файлы появились в папке bin/:
project-dir/
src/
Box.java
BoxMachine.java
bin/
src/
Box.class
BoxMachine.class
Для их запуска из главной директории (project-dir)воспользуемся командой:
$ java -classpath ./bin src.BoxMachine где: -classpath - флаг, после которого указывается... ./bin - ...местоположение скомпилированных файлов src.BoxMachine - название пакета и главного класса
Соберем скомпилированные файлы в jar-файл - архив классов.
В главном каталоге создадим файл-манифест manifest.mf:
project-dir/
manifest.mf
src/
Box.java
BoxMachine.java
bin/
src/
Box.class
BoxMachine.class
В нем указывается главный класс, который будет запускаться при выполнении jar-файла, classpath и дополнительная информация.
main-class: src.BoxMachine // класс, содержащий метод main class-path: bin/ // путь к скомпилированным классам
Собираем jar-файл:
jar -cmf manifest.mf box-machine.jar -C bin . где: -cmf - флаг, после которого указывают... manifest.mf - ...путь к манифесту box-machine.jar - название выходного jar-файла -C - флаг, после которого указывают... bin - ...путь к скомпилированным классам . - путь, куда будет помещен jar-файл
jar-файл создан в текущей папке
project-dir/
box-machine.jar
manifest.mf
src/
Box.java
BoxMachine.java
bin/
src/
Box.class
BoxMachine.class
Запускаем jar-файл командой:
В качестве проверки создадим отдельную директорию lib/, перенесем туда наш jar-файл и запустим его оттуда.
project-dir/
manifest.mf
src/
Box.java
BoxMachine.java
bin/
src/
Box.class
BoxMachine.class
lib/
box-machine.jar