Як додати каталог classpath в профіль запуску програми в IntelliJ IDEA?


206

Я намагаюся додати каталог на класний шлях профілю запуску програми

Якщо я перейду за допомогою -cp x: target / класів у налаштуваннях VM, я отримаю таку помилку:

java.lang.NoClassDefFoundError: com/intellij/rt/execution/application/AppMain

Будь-яка ідея про те, як додати каталог до classpath для мого проекту?


1
Мені незрозуміло, куди ви це намагаєтеся додати. З командного рядка IJ? Або у властивостях проекту?
Хайко Рупп

Відповіді:


270

У Intellij 13, схоже, знову трохи по-іншому. Ось інструкція для Intellij 13:

  1. натисніть на подання проекту або зніміть його, натиснувши кнопку "1: Проект" в лівій частині вікна або натиснувши Alt + 1
  2. знайдіть проект або підмодуль і натисніть на нього, щоб виділити його, потім натисніть F4 або клацніть правою кнопкою миші та виберіть "Відкрити налаштування модуля" (в IntelliJ 14 він став F12)
  3. натисніть на вкладку залежності
  4. Натисніть кнопку "+" праворуч і виберіть "Банки або каталоги ..."
  5. Знайдіть свій шлях і натисніть кнопку ОК
  6. У діалоговому вікні "Вибрати категорії вибраного файлу" виберіть Classes(навіть якщо це властивості), натисніть кнопку ОК та ще раз ОК
  7. Тепер ви можете запустити свою програму, і вона матиме вибраний шлях на шляху до класу

2
Отже, як би ви створили для запуску конфігурації з двох різних каталогів, які повинні бути присутніми виключно в одному, а не в іншому. У затемненні ви можете додати / видалити що-небудь до конфігурації запуску. Чи IntelliJ не підтримує це?
Καrτhικ

9
Цілком зрозуміло, що ви можете змінити classpath запуску конфігурації, змінюючи classpath модуля . Але точним питанням було "як додати каталог до classpath у профілі запуску програми ". Тож справжній дав уакваріус
Павло Вязанкін

Дякую ! Це вирішило мою проблему після віку пошуків навколо!
JonasCz

1
Крок 6 не підходить для мене. Мені на Intellij 14. У мене папка під назвою lib, де знаходиться мій .jar. вибір папки чи баночки просто проаналізує шлях до intellij. все ще не працює
Takeru

@Takeru Ви це зрозуміли?
rosshamish

91

Схоже, IntelliJ 11 змінив метод, і перевірена відповідь більше не працює для мене. Якщо хтось інший приїде сюди через пошукову систему, ось як я це вирішив в IntelliJ 11:

  1. Перейдіть до структури проекту, натисніть на Модулі та натисніть на свій Модуль
  2. Виберіть вкладку "Залежності"
  3. Натисніть кнопку "+" праворуч і виберіть "Банки або каталоги ..."
  4. Додайте потрібну каталог (і) (зауважте, що ви можете обирати декілька) та натисніть кнопку ОК
  5. У діалоговому вікні, що з'явилося, виберіть "класи", а НЕ "каталог jar"
  6. Переконайтеся, що ви використовуєте цей модуль у своїй цілі запуску

Зауважте, що крок 5, здається, є ключовою відмінністю. Якщо ви вибрали "jar jar", він буде виглядати точно так само в IDE, але не буде включати шлях під час виконання. Здається, немає можливості визначити, чи ви раніше вибрали "класи" чи "каталог jar" після факту.


4
Дякую тобі за публікацію цього повідомлення. Ти щойно врятував мене годину або близько того.
Джон Цзян

У мене така ж проблема, як і раніше з IJ11, і я радий знайшов відповідь, що чекає мене цього разу.
сл

Ідеально. Той самий процес для IJ12. Набігаючи на цю публікацію, намагаючись вирішити 'java.lang.ClassNotFoundException: com / microsoft / jdbc / sqlserver / SQLServerDriver' Це вирішило проблему з підключенням. Дякую
jkmurphy1

6
Я не отримую крок 5 :( Діалог просто не з’являється.
Чарльз Вуд

1
@CharlesWood: Коли я хотів вибрати дві папки, в одній з яких містяться підпапки. Мені довелося розгорнути ту, що містить підпапки, через маленький символ стрілки поруч із назвою папки, щоб діалогове вікно з’явилося. В іншому випадку діалогове вікно буде пропущено.
Тімо Рейманн

35

Ви можете спробувати -Xbootclasspath / a: параметр шляху запуску програми Java. За описом він вказує "розділений двокрапкою шлях дирек- тив, архівів JAR та архівів ZIP, щоб додати до шляху класу завантажувальний за замовчуванням".


2
Деяка документація про те, як працює -Xbootclasspath: docs.oracle.com/cd/E15289_01/doc.40/e15062/optionx.htm#i1018570
Lambart

3
Це хороша відповідь, оскільки не вимагає від вас зміни конфігурації проекту. Насправді я думаю, що це найкраще відповідає на питання.
Chewy

1
На жаль, це не спрацювало для мене, оскільки це призводить до того, що всі класи, завантажені з цього класового шляху, завантажуються завантажувачем класу bootstrap, який порушує код, припускаючи, що Xyz.class.getClassLoader () не є нульовим.
Njol

@uaaquarius, Чому немає способу безпосередньо редагувати рядок командного рядка? Це засмучує.
Печер'є

@uaaquarius, чому це так, якщо я додаю mysql-connector-java-5.1.45/mysql-connector-java-5.1.45-bin.jarяк залежність за допомогою іншого методу в stackoverflow.com/a/16742141/632951, він працює, але -Xbootclasspath/aце не використовується?
Печер'є

19

Я використовую Ідею 8. на вкладці залежностей від модуля (у діалоговому вікні структури проекту). Додайте "Бібліотеку модулів". Там ви можете вибрати каталог Jar, який потрібно додати. Потім переконайтесь, що при запуску в профілі запуску використовується Classpath та JDK правильного модуля (це в діалоговому вікні конфігурації запуску.



2

Припустимо, вам потрібно лише x: target / класів у вашому класі . Тоді ви просто додасте цю папку до свого класного шляху та% IDEA% \ lib \ idea_rt.jar. Тепер це спрацює. Це воно.


4
Питання полягає в тому, як додати цю папку до свого класного шляху в IDEA?
Pacerier

0

Не потрібно вказувати папку класів. Intellij має бути в змозі завантажити його. Ви отримаєте цю помилку, якщо "Вихід проекту компілятора" порожній.

Просто переконайтеся , що нижче значення встановлено Параметри проекту -> Project -> Project Compiler вихід на свій ProjectDir / з папки

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.