Если мы хотим некоторый функционал повторно использовать в различных проектах или распространять для использования другими разработчиками в их проектах, то мы можем оформить этот функционал в виде библиотеки. В Java популярным форматом распространения библиотеки является JAR-файл. Рассмотрим, как мы можем создать такую библиотеку и подключить ее в свой проект.
Создадим простейшую библиотеку с одним классом, который будет выполнять математические операции. Сначала определим на диске папку для проекта. Например, в моем случае это папка
workspace/java/mathlib. В папке проекта создадим каталог math, а в нем - файл Operation.java. То есть у нас будет класс Operation, который будет принадлежать
пакету "math" (поэтому внутри проекта мы помещаем файл Operation.java в папку "math").
В файле Operation.java определим следующий код:
package math;
public class Operation {
public static int add(int a, int b) {
return a + b;
}
public static int subtract(int a, int b) {
return a - b;
}
}
Сначала нужно скомпилировать этот файл в класс - файл с расширением .class. Для этого перейдем в консоли в корневой каталог проекта (в моем случае workspace/java) и
выполним следующую команду:
javac -d . math/Operation.java
Параметр -d . указывает, что скомпилированные файлы с расширением .class должны быть помещены в текущий каталог, сохраняя структуру пакетов.
Теперь, когда у нас есть скомпилированные классы, можно упаковать их в JAR-файл. Для этого применяется утилита jar:
jar -cvf mathlib.jar math/
Параметры утилиты jar:
-c: создает новый JAR-файл
-v: выводит подробную информацию о процессе (verbose)
-f: устанавливает имя создаваемого файла (mathlib.jar)
math/: каталог, который нужно добавить в архив (содержит скомпилированные классы)
В результате выполнения этой команды в каталоге появится файл mathlib.jar, который содержит скомпилированные классы (класс Operaton). Полный вывод команды:
eugene@Eugene:/workspace/java/mathlib$ jar -cvf mathlib.jar math/ added manifest adding: math/(in = 0) (out= 0)(stored 0%) adding: math/Operation.class(in = 306) (out= 217)(deflated 29%) adding: math/Operation.java(in = 187) (out= 101)(deflated 45%) eugene@Eugene:/workspace/java/mathlib$
Теперь, когда у нас есть библиотека mathlib.jar, создадим отдельный проект и используем ее. Для проекта определим на диске какую-нибудь новую папку с файлом Program.java.
Пусть в этом файле будет следующий код:
import math.Operation; // подключаем класс из библиотеки
class Program{
public static void main(String[] args) {
int sum = Operation.add(5, 3);
System.out.println("Sum: " + sum); // Sum: 8
}
}
Здесь с помощью выражения импорта подключаем класс "math.Operation" (класс Operation располагается в пакете "math") и затем используем его в программе, вызывая один из его методов.
Также скопируем файл библиотеки mathlib.jar в папку проекта, чтобы не прописывать полный путь к библиотеке. То есть в папке проекта у нас будет два файла:
Program.java
mathlib.jar
Чтобы скомпилировать файл Program.java, компилятору нужно знать, где найти класс Operation. Для этого при компиляции можно использовать опцию -cp:
javac -cp mathlib.jar Program.java
Параметр -cp mathlib.jar указывает, что компилятор должен искать классы не только в текущем каталоге, но и в файле mathlib.jar (jar-файл выступает в роли каталога).
После успешной компиляции можно запустить программу, также указав путь к JAR-файлу:
// для Linux java -cp mathlib.jar:. Program // для Windows java -cp mathlib.jar;. Program
Для выполнения программы здесь применяется параметр -cp mathlib.jar:. (для Linux) или -cp mathlib.jar;. (для Windows), который указывает, что путь к классам должен включать "mathlib.jar" и текущий каталог ("."). Это важно, так как
JVM должна найти и Program.class (который располагается в текущем каталоге), и Operation.class (который располагается в архиве mathlib.jar).
И после запуска мы увидим результат работы программы:
eugene@Eugene:/workspace/java/hello$ java -cp mathlib.jar:. Program Sum: 8 eugene@Eugene:/workspace/java/hello$
Большинство разработчиков используют интегрированные среды разработки (IDE), где процесс подключения JAR-файлов значительно проще.
Установка в IntelliJ IDEA:
Откройте пункт меню File -> Project Structure...
Перейдите в раздел Modules и выберите ваш модуль.
Нажмите на вкладку Dependencies.
Нажмите + и выберите JARs or directories....
Найдите файл jar-библиотеки и нажмите "OK".
Установка в Eclipse:
Кликните правой кнопкой мыши по вашему проекту в Package Explorer.
Выберите Build Path -> Configure Build Path....
Перейдите на вкладку Libraries.
Нажмите Add External JARs....
Найдите файл jar-библиотеки и нажмите Open.
После этих шагов IDE автоматически добавит JAR-файл в путь компиляции и запуска.