Разница между Sourcepath, Classpath и Buildpath

Такие термины, как Sourcepath, Classpath и Buildpath, часто используются в разработке программного обеспечения. Понимание этих терминов необходимо при разработке и компиляции приложения, особенно в IDE. Давайте разберемся в различиях между этими путями.

1. Исходный путь

В Java термин «Sourcepath» относится к корневому пути или каталогу, в котором компилятор Java(javac) ищет файлы исходного кода(файлы .java) для компиляции в байт-код(файлы .class).

По умолчанию компилятор ищет файлы Java относительно текущего рабочего каталога. Когда мы компилируем программу Java, мы можем предоставить исходный путь компилятору. В следующем примере компилятор Java будет искать HelloWorld.java в каталоге /path/to/source.

javac -sourcepath /path/to/source HelloWorld.java

Инструменты сборки, такие как Apache Maven и Gradle, а также интегрированные среды разработки(IDE), такие как Eclipse, NetBeans и IntelliJ IDEA, предоставляют механизмы для настройки sourcepath в настройках проекта. Эти инструменты управляют процессом компиляции и автоматически обрабатывают sourcepath для нас.

В следующем примере показано, как IntelliJ idea настраивает исходную папку для проекта Maven:

Разница между Sourcepath, Classpath и Buildpath0

2. Путь к классам

classpath указывает местоположения, в которых JRE/JVM должны искать классы и ресурсы во время компиляции и выполнения. Ресурсы выполнения обычно представляют собой скомпилированный байт-код(файлы *.class), стандартные библиотеки JDK и другие библиотеки(файлы JAR), импортированные в проект для запуска программы Java.

Во время компиляции мы можем передать classpath как аргумент командной строки следующим образом:

java -classpath .;C:\dependency\framework.jar HelloWorld.java

Или мы можем установить classpath в переменных окружения машины, чтобы повторно использовать его каждый раз, когда на машине выполняется программа Java.

Подробнее о classpath можно узнать в этой статье.

3. Путь сборки

Путь сборки — это общий термин, который включает все необходимые местоположения для поиска ресурсов, включая sourcepath и classpath. Он указывает, где компилятор и среда выполнения должны искать внешние библиотеки, файлы JAR и другие ресурсы, необходимые приложению.

Термин buildpath используется в основном, когда мы говорим об инструментах разработки Java, таких как IDE или Maven/Gradle. IDE или инструмент сборки использует buildpath для компиляции исходных файлов, генерации байт-кода и упаковки проекта в распространяемую форму(например, файл JAR или WAR).

4. Резюме

Чтобы полностью понять различия между sourcepath, classpath и buildpath, мы должны следовать общей идее разработки приложений Java.

Во-первых, в процессе разработки классы Java компилируются в файлы классов, и этот процесс вводит термин «Sourcepath». Sourcepath определяет расположение файлов исходного кода(файлов .java), которые требуются для компиляции проекта на этапе разработки.

После того, как эти файлы исходного кода преобразуются в файлы классов, мы сталкиваемся с термином classpath. Classpath указывает местоположения, где JVM может найти скомпилированные классы(файлы .class) и библиотеки во время компиляции и выполнения.

Наконец, IDE используют buildpath для определения конфигураций и местоположений, где компилятор может найти необходимые файлы исходного кода и библиотеки в процессе сборки.

Прокрутить вверх