Правильный способ добавления внешних jar (lib / *. Jar) в проект IntelliJ IDEA


734

При создании нового Java-проекта в IntelliJ IDEA создаются следующие каталоги и файлы:

./projectname.iml
./projectname.ipr
./projectname.iws
./src/

Я хочу настроить IntelliJ IDEA для включения JAR-файлов зависимостей в ./lib/*.jarпроект. Как правильно достичь этого в IntelliJ IDEA?


Я сталкиваюсь с проблемой при запуске программы в терминале в IntelliJ. Я использовал оператор import для использования классов, которые мне нужны в программе. Пока я запускаю его в IDE, он работает нормально. Но когда я пытаюсь скомпилировать из командной строки% javac MyProgram.java, появляется сообщение об ошибке: не удается найти символ
don_Gunner94

Ответы:


1307

Шаги для добавления внешних jar в IntelliJ IDEA:

  1. Нажмите Fileна панели инструментов
  2. Структура проекта ( CTRL+ SHIFT+ ALT+ Sв Windows / Linux, + ;в Mac OS X)
  3. Выберите Модули на левой панели
  4. Вкладка Зависимости
  5. '+' → JAR или каталоги

99
Кроме того, рассмотрите возможность добавления папки lib и используйте «Attach Jar Directories», которая добавит все файлы jar в папку lib. Для большого проекта это избавляет вас от необходимости выбирать каждую банку индивидуально.
Joeslice

16
Для дальнейшего использования: эта кнопка «Добавить» находилась за правым краем окна, и я потратил слишком много времени на ее поиск, прежде чем найти этот пост и подумать, как изменить размер окна. (Это было на OSX 10.6.5 ...)
Даниэль Дикисон

7
@joeslice, который работает, только если файлы JAR находятся в корневом каталоге, верно? Кажется, он не работает для JAR-файлов внутри подкаталогов внутри 'lib'.
opyate

6
В IJIdea 13 вместо «добавить» стоит «+»>.
Val

4
Я использую IDEA 14.0.2. Вместо Добавить есть символ +. После нажатия + есть 3 варианта: 1. JAR или каталоги 2. Библиотека ... 3. Зависимость модуля ...
Рипон Аль Васим

239

IntelliJ IDEA 15 & 2016

  1. Файл > Структура проекта ...

    Файл> Структура проекта

    или нажмите Ctrl+ Alt+ Shift+S

  2. Настройки проекта > Модули > Зависимости > знак « + »> JAR или каталоги ...

    Модули> Зависимости> JAR или каталоги

  3. Выберите файл фляги и нажмите OK, затем нажмите другую кнопку OK, чтобы подтвердить

    введите описание изображения здесь

    введите описание изображения здесь

  4. Вы можете просмотреть файл JAR в папке «Внешние библиотеки»

    введите описание изображения здесь


На самом деле я создаю новый модуль на панели «Модули» (названный, например, «JarsForLogging»), затем добавляю все нужные мне файлы jar (расположенные в некотором каталоге, далеко от дерева проекта) в этот новый модуль и помечаю банки как « Экспорт». Наконец, я добавляю вновь созданный модуль в зависимости от исходного модуля. Таким образом, немного более иерархичным.
Дэвид Тонхофер

Кроме того: убедитесь, что разрешения файловой системы установлены правильно для .jarфайлов. Используйте chmodдля их изменения в Linux или MacOS.
JJD

4
до сих пор работает в 2018 году (год и версия IntelliJ). Спасибо. Таким образом, я могу загружать и использовать библиотеки Armed Bear Common Lisp из IntelliJ, потрясающе!
Джейсон Робинсон

Ага. Хорошо работает и с моим IntelliJ. Спасибо!
Bms bharadwaj

1
@ don_Gunner94, через командную строку вы также должны предоставить банку так:javac -cp ".:/my/path/file.jar;" MyProgram.java
ROMANIA_engineer

118

Просто скопируйте и вставьте файл .jar в папку «libs» (или целую папку «libs»), щелкните по нему правой кнопкой мыши и выберите «Добавить как библиотеку» из списка. Это сделает все остальное ...

введите описание изображения здесь


Самый простой и привычный нам со времен Eclipse.
Суфий

3
Легко и просто!!
Анаксимандро Андраде

3
Что-то раздражает, но все равно просит «имя», можете ли вы просто оставить там мусор?
Divybyzero

Это мне тоже помогло!
Прити Джоши

Я сталкиваюсь с проблемой при запуске программы в терминале в IntelliJ. Я использовал оператор import для использования классов, которые мне нужны в программе. Пока я запускаю его в IDE, он работает нормально. Но когда я пытаюсь скомпилировать из командной строки% javac MyProgram.java, появляется сообщение об ошибке: не удается найти символ. -
don_Gunner94

20

Вы добавляете их как библиотеки в свой модуль.

У меня обычно есть /libкаталог в моем источнике. Я поместил все необходимые мне JAR-файлы, добавил / lib как библиотеку и включил ее в мои зависимости от модулей.

Обновление 2018 года: сейчас я пользуюсь IntelliJ 2017/2018.

Я полностью привержен Maven и Nexus для управления зависимостями.

Это путь, которым мир пошел. Каждый известный мне Java-проект с открытым исходным кодом использует Maven или Gradle. Тебе тоже следует.


Да, но что, если Maven pom не называется pom.xml? Тогда кажется, что я не могу читать зависимости Maven.
user1001630

4
Условно называть это pom.xml. Следуйте соглашению и переименуйте ваш файл.
Duffymo

Я все еще нахожу необходимость, когда на банке нет репозитория Maven ... но я не понимаю, как это сделать правильно. Я понимаю, как добавить каталог, я просто не понимаю, как его получить, он также импортирует Javadocs. это работает, когда я добавляю флягу как единственный файл, но не, если я добавляю каталог. Это просто невозможно?
Ycomp

Это здравый совет. Добавление банок вручную занимает много времени и подвержено ошибкам. Ваши зависимости всегда должны быть настроены «через код», в pom.xml(для maven) или в любом другом эквиваленте для gradle.
Викингстеве

1
Все банки имеют репо. Если он не доступен в публичном или частном репозитории, вы можете установить его вручную в локальном .m2. Там нет причин делать иначе.
duffymo

17

Если вы строите свой проект с помощью gradle, вам просто нужно добавить одну строку в зависимости в build.gradle:

buildscript {
    ...
}
...

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
}

и затем добавьте папку в ваш корневой проект или модуль:

введите описание изображения здесь

Тогда вы бросаете свои банки туда, и вы готовы идти :-)


Я сталкиваюсь с проблемой при запуске программы в терминале в IntelliJ. Я использовал оператор import для использования классов, которые мне нужны в программе. Пока я запускаю его в IDE, он работает нормально. Но когда я пытаюсь скомпилировать из командной строки% javac MyProgram.java, появляется сообщение об ошибке: не удается найти символ. -
don_Gunner94

7

Я использую этот метод, и он хорошо работает:

1- Скопируйте и вставьте .jarфайлы в libsпапку.

2 Добавить compile fileTree(dir: 'libs', include: '*.jar')в dependenciesв build.gradleто все банки в libsбудут включены папки ..

3- Щелкните правой кнопкой мыши по libsпапке и выберите опцию «Добавить как библиотеку» из списка.


Спасибо, это было единственное, что сработало для меня!
Грегорди

Я сталкиваюсь с проблемой при запуске программы в терминале в IntelliJ. Я использовал оператор import для использования классов, которые мне нужны в программе. Пока я запускаю его в IDE, он работает нормально. Но когда я пытаюсь скомпилировать из командной строки% javac MyProgram.java, появляется сообщение об ошибке: не удается найти символ.
don_Gunner94

5

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

Это легко сделать в таких интеллектуальных средах, как Inteli J.

1) Сначала в качестве соглашения добавьте имена папок 'libs' в файл src вашего проекта. (это легко сделать с помощью самой IDE)

2) затем скопируйте или добавьте свой библиотечный файл (например, файл .jar) в папку с именем 'libs'

3) теперь вы можете увидеть файл библиотеки внутри папки libs. Теперь щелкните правой кнопкой мыши по файлу и выберите «Добавить как библиотеку». И это исправит все соответствующие файлы в вашей программе, и библиотека будет напрямую доступна для вашего использования.

Пожалуйста, обратите внимание:

Всякий раз, когда вы добавляете библиотеки в проект, убедитесь, что проект поддерживает библиотеку


3

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

Вот след:

Файл -> Структура проекта -> Модули -> (выберите подходящий модуль, если у вас есть больше) -> Зависимости -> + -> JAR или библиотеки


3

Хотя я согласен с предыдущими ответами, важно отметить, как получить доступ к коду этих внешних библиотек.

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

Посмотрите на изображение ниже, чтобы увидеть, как я импортирую класс CodeGenerationException из библиотеки quickfixj.

введите описание изображения здесь

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.