Как добавить каталог в classpath в профиле запуска приложения в IntelliJ IDEA?


206

Я пытаюсь добавить каталог в classpath профиля запуска приложения

Если я переопределю с помощью -cp x: target / classes в настройках виртуальной машины, я получу следующую ошибку:

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(даже если это свойства), нажмите OK и снова OK
  7. Теперь вы можете запустить ваше приложение, и оно будет иметь выбранный путь в пути класса

2
Итак, как бы вы создали для запуска конфигурации с двумя разными каталогами, которые должны присутствовать исключительно в одном, но не в другом. В eclipse вы можете добавлять / удалять все что угодно в конфигурации запуска. Разве IntelliJ не поддерживает это?
Καrτhικ

9
Совершенно очевидно, что вы можете изменить путь к классу для запуска конфигурации, изменяя путь к классу модуля . Но точный вопрос был «как добавить каталог в classpath в профиле запуска приложения ». Таким образом, реальное было дано uaaquarius
Павел Вязанкин

Спасибо ! Это решило мою проблему после долгих поисков вокруг!
JonasCz - Восстановить Монику

1
Шаг 6 не подходит для меня. Я на Intellij 14. У меня есть папка с именем lib, где находятся мои .jar. Выбор папки или банку будет просто разобрать путь в intellij. до сих пор не работает
Takeru

@Takeru Ты понял это?
rosshamish

91

Похоже, что IntelliJ 11 изменил метод, и проверенный ответ больше не работает для меня. В случае, если кто-то еще прибудет сюда через поисковик, вот как я решил это в IntelliJ 11:

  1. Перейдите в структуру проекта, нажмите «Модули» и выберите свой модуль.
  2. Выберите вкладку «Зависимости»
  3. Нажмите кнопку «+» справа и выберите «Банки или каталоги ...»
  4. Добавьте каталог (ы), который вы хотите (обратите внимание, вы можете выбрать несколько) и нажмите кнопку ОК
  5. В появившемся диалоговом окне выберите «classes», а не «jar directory»
  6. Убедитесь, что вы используете этот модуль в своей цели запуска

Обратите внимание, что шаг 5 кажется ключевым отличием. Если вы выберете «jar directory», он будет выглядеть точно так же в IDE, но не будет включать путь во время выполнения. Похоже, нет никакого способа определить, выбрали ли вы «классы» или «каталог jar» по факту.


4
Спасибо вам большое за размещение этого. Вы только что спасли меня час или около того.
Джон Цзян

У меня та же проблема, что и раньше с IJ11, и я был рад найти ответ, ожидающий меня на этот раз.
Sal

Отлично. Тот же процесс для IJ12. Пробежал по этому сообщению при попытке решить 'java.lang.ClassNotFoundException: com / microsoft / jdbc / sqlserver / SQLServerDriver' Это решило проблему с соединением. Спасибо
jkmurphy1

6
Я не получаю шаг 5 :( Диалог просто не появляется.
Чарльз Вуд

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

35

Вы можете попробовать опцию -Xbootclasspath / a: path в программе запуска Java-приложений. По описанию он определяет «разделенный двоеточиями путь directires, JAR-архивов и ZIP-архивов для добавления к стандартному пути начальной загрузки».


2
Некоторая документация о том, как работает -Xbootclasspath: docs.oracle.com/cd/E15289_01/doc.40/e15062/optionx.htm#i1018570
Ламбарт

3
Это хороший ответ, поскольку он не требует изменения конфигурации проекта. На самом деле я думаю, что это лучше всего отвечает на вопрос.
Chewy

1
К сожалению, это не сработало для меня, так как это приводит к тому, что все классы, загруженные из этого пути к классам, загружаются загрузчиком классов начальной загрузки, что нарушает код, который предполагает, что Xyz.class.getClassLoader () не является нулевым.
Njol

@uaaquarius, почему нет способа редактировать строку командной строки напрямую? Это расстраивает.
Pacerier

@uaaquarius, Почему, если я добавляю в mysql-connector-java-5.1.45/mysql-connector-java-5.1.45-bin.jarкачестве зависимости, используя другой метод на stackoverflow.com/a/16742141/632951, это работает, а использование -Xbootclasspath/aего - нет?
Pacerier

19

Я использую Idea 8. на вкладке зависимостей вашего модуля (в диалоге структуры проекта). Добавьте «Библиотеку модулей». Там вы можете выбрать Jar Directory для добавления. Затем убедитесь, что профиль запуска использует Classpath и JDK правильного модуля при запуске (это находится в диалоговом окне конфигурации запуска).



2

Предположим, вам нужен только x: target / classes в вашем classpath. Затем вы просто добавляете эту папку в ваш путь к классам и% IDEA% \ lib \ idea_rt.jar. Теперь это будет работать. Вот и все.


4
Вопрос в том, как добавить эту папку в classpath в IDEA?
Pacerier

0

Вам не нужно указывать папку классов. Intellij должен быть в состоянии загрузить его. Вы получите эту ошибку, если «Вывод компилятора проекта» пуст.

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

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