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.4k 1 1 золотой знак 18 18 серебряных знаков 29 29 бронзовых знаков
- java
- intellij-idea
- classpath
-
Важное на Мете
Похожие
Подписаться на ленту
Лента вопроса
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
Дизайн сайта / логотип © 2024 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2024.1.17.3559
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
Сообщений: 132
Gungala, расскажите, пожалуйста, про переменную окружения classpath. Где я её могу увидеть? Дело в том, что у меня никак не получается прописать путь к папке с ресурсами. В интернете пишут, что надо указывать либо абсолютный, либо относительный путь к ресурсам, дописывая его с учётом значения classpath. Я же этот classpath вообще нигде не могу найти.
1021 / 561 / 185
Регистрация: 18.08.2013
Сообщений: 2,026
Записей в блоге: 2
Если ты имеешь ввиду системную переменную, то вот, а если о classpath, который собирает сама IDE, то он должен быть в файле в корне проекта
Регистрация: 17.08.2017
Сообщений: 132
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!
![]()
![]()
16673 / 9963 / 2757
Регистрация: 21.10.2017
Сообщений: 21,890
Сообщение от Иван24 
это source root?
Да.
Кстати, нагугли книженцию — Давыдов С.В., Ефимов А.А. — «IntelliJ IDEA. Профессиональное программирование на Java.»
Несмотря на возраст, есть довольно много интересных фич.
1021 / 561 / 185
Регистрация: 18.08.2013
Сообщений: 2,026
Записей в блоге: 2
Не знаю где в идее хранится значение classpath, но при запуске программы показывается команда, с помощью которой прога, собсна, запустилась
Регистрация: 17.08.2017
Сообщений: 132
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
Сообщений: 132
В папке /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()); }
Classpath java как прописать intellij idea
Контент представлен пользователями ОК. Здесь вы найдете все, что нужно, чтобы быть в курсе последних новостей и тенденций в мире технологий. classpath java как прописать intellij idea – ОК место, где вы сможете найти ответы на все вопросы, связанные с гаджетами, а также прочитать интересные статьи, подготовленные нашими экспертами. Будьте в центре событий и следите за всеми новинками в области гаджетов. Изучайте контент, если вы искали classpath java как прописать intellij idea и интересуетесь этой увлекательной темой.
Часто ищут
- Футбол
- Ресницы
- Рассказы
- Как сшить костюм
- Продам
- Жареная картошка
- Подслушано
- Стихи
- Снасти
- Новости
- Пирожки с капустой
- Приколы с животными
- Рецепты на скорую руку
- Вышивка крестиком
- Юмор
- Топ фильмов
- Вкусные рецепты
- Нейросети
- Как испечь торт
- Смешные картинки