Classpath
В большинстве случаев команды java и javac должны найти другие классы необходимые для компиляции и выполнения. Самый распространенный случай — это использование классов входящих в Java SE. Или, например, нам нужно скомпилировать и запустить класс, который использует другие классы, не входящие в Java SE.
Команды java и javac используют следующий алгоритм поиска:
- Они используют один и тот же список каталогов, в которых ищут необходимые файлы.
- Обе команды в процессе поиска просматривают список каталогов в одном и том же порядке.
- Как только необходимый класс найден, процесс поиска прекращается. Если список каталогов содержит два или более классов с одним и тем же именем, используется первый найденный.
- Первое место используемое в процессе поиска — это каталоги содержащие классы Java SE.
- Второе место — каталоги определенные в так называемом Сlasspath.
Classpath может быть задано двумя способами:
- Как переменная окружения CLASSPATH. Команды java и javac используют этот способ по умолчанию.
- Как ключ -classpath (или -cp) команд java и javac. Этот способ переопределяет список каталогов заданный переменной окружения, но только для конкретного вызова. Данный метод является более предпочтительным.
2. Использование ключа -classpath
Рассмотрим использование ключа -cp используя классы first.Example1 и second.Example2 , описанные здесь. Но предположим, что класс second.Example2 находится в другом проекте и доступны только его .class файлы. На рисунке изображена схема каталогов для данного примера:

Следующая команда будет использована для компиляции first.Example1 класса, где ключ -cp указывает на расположение .class файла second.Example2 :
cd projectExample1 javac -d classes -cp ../projectExample2/classes src/first/Example1.java
Для запуска программы используется команда:
cd projectExample1 java -cp classes;../projectExample2/classes first.Example1
Ключ -cp указывает расположение .class файла second.Example2 (как и при компиляции), а также путь для поиска .class файла first.Example1 — classes.
Несколько важных правил при использовании ключа -cp :
- Ключ -cp может содержать несколько каталогов, разделенных точкой с запятой, как показано в примере при запуске команды java .
- Если указывается подкаталог, это НЕ означает что родительский каталог тоже входит в classpath. Например, для ключа -cp ../projectExample2/classes , каталог ../projectExample2 не будет входить в classpath.
- Если используется ключ -cp , то команды javac и java НЕ ищут классы в текущем каталоге по умолчанию. Для указания текущего каталога используется точка. Например:
cd projectExample1/classes java -cp .;../../projectExample2/classes first.Example1
Презентацию с видео можно скачать на Patreon .
Как правильно указать classpath для jar файлов в Intellij IDEA 2020.2?
Скачал jar файл javax.mail. И никак не могу понять как его засунуть в classpath. Из-за этого программа кидает NoClassDefFoundError. Как решить?
Отслеживать
задан 19 фев 2021 в 17:45
157 5 5 бронзовых знаков
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
В IntelliJ вы конфигурируете используемые библиотеки, а при запуске все библиотеки добавляются в classpath самой IDE.
Что добавить библиотеку в проект в структуре проекта выбираете Project Settings -> Libraries -> + -> Java :

Отслеживать
ответ дан 19 фев 2021 в 18:15
Roman-Stop RU aggression in UA Roman-Stop RU aggression in UA
23.3k 1 1 золотой знак 18 18 серебряных знаков 29 29 бронзовых знаков
- java
- intellij-idea
- classpath
-
Важное на Мете
Похожие
Подписаться на ленту
Лента вопроса
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.11.21.1314
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
CLASSPATH в IntelliJ IDEA
Здравствуйте. Подскажите, пожалуйста, как можно увидеть или получить значение classpath в IntelliJ IDEA?
И ещё: не могу понять, что делает пункт меню VCS — Git — Branches — Checkout Tag or Revision. Что такое Git я знаю, внятно перевести на русский этот пункт меню не могу.
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:
intellij idea
Здравствуйте! Помогите, у меня есть код на java, только незнаю как его вставить в intellij idea.
Intellij Idea
Ошибка с @Test. Test package Main; import org.junit.jupiter.api.BeforeEach; import.

IntelliJ IDEA
Здравствуйте. Столкнулся сегодня с проблемкой в IntelliJ IDEA Community Edition 14.1.1, после.
Java intellij idea
Здравствуйте. Буду рад ответу, как в intelij idea найти класс system? И еще, в java все библиотеки.
1021 / 561 / 185
Регистрация: 18.08.2013
Сообщений: 2,026
Записей в блоге: 2
Ну, насколько я понимаю, tag позволяет отмечать определённые коммиты, шоб потом к ним вернуться. Механизм ревизии работает примерно также, но предоставляет больший функционал. Ну и собсна checkout позволяет между ними (тэгами) переключаться
Регистрация: 17.08.2017
Сообщений: 125
Gungala, расскажите, пожалуйста, про переменную окружения classpath. Где я её могу увидеть? Дело в том, что у меня никак не получается прописать путь к папке с ресурсами. В интернете пишут, что надо указывать либо абсолютный, либо относительный путь к ресурсам, дописывая его с учётом значения classpath. Я же этот classpath вообще нигде не могу найти.
1021 / 561 / 185
Регистрация: 18.08.2013
Сообщений: 2,026
Записей в блоге: 2
Если ты имеешь ввиду системную переменную, то вот, а если о classpath, который собирает сама IDE, то он должен быть в файле в корне проекта
Регистрация: 17.08.2017
Сообщений: 125
Gungala, добрый вечер, простите, что долго не отвечал. Меня интересует «classpath, который собирает сама IDE». Если я правильно Вас понял, то у проекта со структурой, показанной на картинке project_structure.png, classpath — это Full_kursach.
Правильно ли я понимаю, что classpath свой у каждого проекта и увидеть его можно в разделе Run — Edit Configurations — Use classpath of module (картинка Edit_conf.png)?
Папка, окрашенная в цвет ясного неба, в моём случае java, это source root?
Am I evil? Yes, I am!
![]()
![]()
16134 / 9769 / 2731
Регистрация: 21.10.2017
Сообщений: 21,642
Сообщение от Иван24 
это source root?
Да.
Кстати, нагугли книженцию — Давыдов С.В., Ефимов А.А. — «IntelliJ IDEA. Профессиональное программирование на Java.»
Несмотря на возраст, есть довольно много интересных фич.
1021 / 561 / 185
Регистрация: 18.08.2013
Сообщений: 2,026
Записей в блоге: 2
Не знаю где в идее хранится значение classpath, но при запуске программы показывается команда, с помощью которой прога, собсна, запустилась
Регистрация: 17.08.2017
Сообщений: 125
Gungala, Вы навели меня на мысль и я внимательно глянул на команду, с помощью которой «прога» запускается. Нашёл интересный кусочек своей команды: -classpath H:\IDEA_projects\Full_kursach\target\classes MyStart6
В директорию target/ я как-то никогда внимательно не заглядывал (честно, я плохо пока представляю какую роль она играет), заглянув увидел, что она тоже содержит папки с ресурсами. Предположив, что classpath — это скопированная выше часть команды запуска приложения, я прописал путь к ресурсам, лежащим внутри target/, относительно -classpath. При перезапуске приложения ошибка java.lang.NullPointerException исчезла! Кажется, classpath найден!
P.S.: По моему разумению относительно classpath надо прописывать пути к ресурсам.
Добавлено через 18 минут
iSmokeJC, книжку, кажется, бесплатно не скачать.
Регистрация: 17.08.2017
Сообщений: 125
В папке /target/Images у меня лежат .png и .jpg-файлы и к ним прописать путь получилось благополучно:
static final String PATH_PHOTO = "/Images/";
В папке /target/Files у меня лежат обычные текстовые файлы, к ним я по аналогии прописываю путь:
static final String PATH_PROJECT = "/Files/";
Однако при запуске приложение оказывается не в состоянии отыскать текстовый файл. Возникает ошибка, приведённая на картинке.
Названия совпадают, проверял.
Доступ к файлу организован следующим образом:
1 2 3 4 5 6 7
try(BufferedReader br = new BufferedReader(new FileReader(MyStart6.class.getResource(MyStart6.PATH_PROJECT + "CountPanels").toString()))){ String s = br.readLine(); if (s != null) MyGournal.setCount(Integer.parseInt(s)); } catch (IOException ex) { System.out.println("Ошибка в WriterReader.getCountInFile(): " + ex.getMessage()); }
Регистрация: 17.08.2017
Сообщений: 125
Почитал информацию, в частности, здесь:
По моим представлениям всё должно быть хорошо.
Добавлено через 2 часа 0 минут
Отчасти разобрался:
BufferedReader br = new BufferedReader(new FileReader(MyStart6.class.getResource(MyStart6.PATH_PROJECT + "CountPanels").getFile()))
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь
Не работает IntelliJ IDEA
Запускаю, идет какая-то подгрузка и после ничего не происходит. В чем может быть проблема?
Intellij Idea не компилирует
:wall: Я учу java. Установила intellij idea c плагином от javarush и никак не могу начать в ней.
Intellij IDEA в неадеквате
Очень странно ведет себя. Раньше такого не замечал, а после переустановки винды и соответственно.
Как подключить MySQL к бесплатной версии Intellij IDEA (community)

Привет, сегодня покажу как подключить Ваше приложение к базе данных (БД) в бесплатной версии Intellij IDEA (community).В статье будет: много картинок, мало букв, будет интересно и полезно.
Статья ориентирована на людей уже знакомых с Java Core и MySQL.
А так же для подключения базы данных к приложению Вам необходимо скачать и перед прочтением статьи установить сервер с официального сайта (Это бесплатно).https://dev.mysql.com/downloads/workbench/
1: Создаём новый проект в Intellij IDEA

2: Затем идём вFile->Settings->Plugins->MarketPlace и в поисковой строке вводим Database Navigator.Устанавливаем, перезапускаем Intellij IDEA.

3: После установки плагина и перезапуска Intellij IDEA, в Вашем ТулБаре появится новое окно (DB Navigator)
4: Заходим в новое окно(DB Navigator), нажимаем зелёный плюсик и из предложенного списка выбираем MySQL

5: В появившемся окне вписываем в поле Name, имя которое вы хотите дать базе данных. Описание можно оставить пустым.Host и Port трогать не нужно. Проследите за тем что бы в поле Database была строка mysql. Вводим User и Password (Обычно это (root) для Логина и Пароля). После всего нажимайте Test Connection.

6: При тестировании соединения может возникнуть ошибка временной зоны. Для её исправления в поиске операционной системы вводим mysql, и выбираем MySQL Command Line Client (всё как на картинке).

7: В появившемся консоле вводим пароль БД, И вводим команду set global time_zone = ‘+3:00’;(+3 часа это мой часовой пояс так как я нахожусь в Минске, вы вводите часовой пояс своего города).

8: После исправления ошибки жмите Apply, Ok и в вашем DB navigator появляется структура БД с которой вы можете просматривать таблицы и БД.

9: Рекомендую при просматривании таблиц нажимать на кнопку No filters.

10: Теперь нужно установить драйвер (это быстро) для Вашей БД. Идём на официальный сайт ORACLE ( dev.mysql.com/downloads/connector/j ) и качаем архив. Выберите из списка Platform Independent.

11: Когда архив загрузился, открываем его и извлекаем файл (смотрите картинку) в папку (путь к папке нужно запомнить).

12: Переходим в Intellij IDEA, там ищем File->Project Structure ->SDK’s -> плюсик который отмечен стрелкой -> ищем файл который только что скачали -> жмём ОК.

13: База Данных подключена к Intellij IDEA! Теперь надо разобраться как подключиться к ней через приложение. Для этого я создал класс который назвал TestConnection и в нём прописал константы (USER_NAME, PASSWORD, URL), создал статические Statement и Connection.

14: Кстати что бы найти значение поля URL, нужно открыть Ваш DB Navigator, нажать на зелёный плюс, выбрать mysql(Тут БД может попросить логин и пароль), и в открывшемся окне выбрать Info. Скопировать значение строки Connection URL.Это и будет URL.
15: Осталось немного. Просим у ДрайверМенеджера что бы он дал нам соединение (смотрите картинку ниже, верхний красный блок).Всё должно быть обёрнуто в ТрайКэтч. А в нижнем блоке создаём Statement.

16: Как я уже писал статья ориентирована на людей уже знакомых с языком MySQL. все запросы легко гугляться, язык очень простой и является MustHave(обязательно) для каждого BackEND Developer, поэтому я не буду объяснять что написано на языке SQL (было бы очень долго). Что касается Java:
1 — В главном методе (main) нужно указать ClassPath (первая строка на картинке).
2 — Во втором красном блоке у Statement я вызвал метод executeUpdater. Его нужно использовать для обновления или добавления данных в таблице. Метод, по умолчанию, в параметры принимает строку в которую Вам следует писать ваши SQL-запросы обёрнутый в двойные кавычки.
3 — Добавление данных в таблицу наглядно.
4 — Для получения данных из таблицы я вызвал метод executeQuery у Statement, он так же принимает строку в параметры.
5 — Что бы вывести в консоль данные полученные с таблицы я использую цикл while с параметром (смотрите картинку) который проходит все строки таблицы по очереди, а в теле вызывается метод getString у resulySet (Всё как на картинке). этот метод принимает в параметры цифру которая означает номер колонки которую вы хотите получить.

Какие могут быть ошибки
Хочу рассказать о некоторых ошибках с которыми Вы можете встретиться, конечно вы можете это не читать, но это очень важно.
1 — Если создание таблицы прошло успешно, её следует закомментировать потому что так как таблица уже создана, при следующем запуске приложение вылетит, потому что код начнёт отрабатывать по новой и попытается создать ещё одну таблицу с таки же Name, а это запрещено.
Будет вот такая ошибка. Что значит «Таблица Name уже существует»

2 — Так же и со всеми данными, если они добавлены успешно, следует удалять или комментировать строки которые их добавляли или обновляли.
3 — Будьте внимательны с SQL, Intellij IDEA не подчёркивает ошибки которые вы допускаете в синтаксисе, закрывайте скобки и кавычки. Пример ошибки синтаксиса SQL

Всем спасибо
AlexOakUnlimited ©
