Добавьте файл свойств в путь к классам IntelliJ
Я запускаю простую программу Java из IntelliJ IDE с помощью меню Run->Run. Он отлично работает. Теперь я хочу добавить log4j logging.
Я добавил папку ресурсов в корневой каталог проекта.
Я добавил файл log4j. properties в эту папку.
Я изменил код, чтобы записать что-то.
Как правильно сказать IntelliJ, чтобы включить папку resources в путь к классам, чтобы файл свойств был виден?
с IntelliJ 8 я мог бы догадаться, как пьяная обезьяна и в конце концов заставить его работать. У меня сейчас 9, и я совершенно неудачен. Я пытаюсь уже целый час. Как насчет опции" добавить в classpath " где-нибудь? /дым /вент /рант
9 ответов:
попробуйте это:
- перейти к структуре проекта.
- выберите ваш модуль.
- найдите папку в дереве справа и выберите ее.
- Нажмите кнопку источники над этим деревом (с синей папкой), чтобы сделать эту папку папкой источников.
на самом деле, у вас есть по крайней мере 2 способа сделать это, первый способ описывается ColinD, вы просто настраиваете папку "ресурсы" в качестве папки источников в IDEA. Если Шаблоны Ресурсов содержится расширения вашего ресурса, то он будет скопирован в выходной каталог, когда вы сделать каталог проекта и вывода автоматически является путем к классу вашего приложения.
еще один распространенный способ-добавить папку "ресурсы" в classpath непосредственно. Перейти к Структура Проекта / Модули / Ваш Модуль / Зависимости, нажмите кнопку добавить, Библиотека Модулей С Одним Входом, укажите путь к папке "ресурсы".
еще одним решением было бы поставить log4j. properties файл непосредственно под корнем источника вашего проекта (в каталоге пакета по умолчанию). Это то же самое, что и первый способ, за исключением того, что вам не нужно добавлять другой исходный корень в модуль пути настройки, файл будет скопирован в выходной каталог на Сделать.
Если вы хотите протестировать с различными конфигурациями log4j, может быть проще указать пользовательский файл конфигурации непосредственно в запуск/отладка конфигурации,параметры ВМ подано как:
-Dlog4j.configuration=file:/c:/log4j.properties.
У меня та же проблема, и это меня ужасно раздражает!!
Я всегда думал, что я был превзойден, чтобы сделать как ответ 2. Раньше это работало в Intellij 9 (теперь используется 10).
однако я понял, что, добавив эти строки в мой файл maven pom, помогает:
<build> ... <resources> <resource> <directory>src/main/resources</directory> </resource> </resources> ... </build>
Я потратил довольно много времени, выясняя, как это сделать в Intellij 13x. я, по-видимому, никогда не добавлял файлы свойств к артефактам, которые их требовали, что является отдельным шагом в Intellij. Установка ниже также работает, когда у вас есть файл свойств, который совместно используется несколькими модулями.
- перейдите к настройке проекта (CTRL + ALT + SHIFT + S)
- в списке выберите модуль, в который вы хотите добавить один или несколько файлов свойств.
- на справа выберите вкладку зависимости.
- нажмите на зеленый плюс и выберите "банки или каталоги".
- Теперь выберите папку, содержащую файл(ы). (Я не пробовал включить отдельный файл)
- Intellij теперь спросит вас, что такое "категория" выбранного файла. Выберите" классы " (даже если они не являются).
- Теперь необходимо добавить файлы свойств к артефакту. Intellij даст вам ярлык, показанный ниже. Он будет показывать ошибки в красной части внизу и "красная лампочка", которая при нажатии показывает вам возможность добавить файлы к артефакту. Вы также можете перейти в раздел "артефакты" и добавить файлы к артефактам вручную.
столкнулся с аналогичной проблемой при добавлении файлов .расширениями ini-файл в classpath. нашли этот ответ!--2-->, который должен добавить его в Настройки - > компилятор - > Шаблоны ресурсов - > [...];*.ini
для тех из вас, кто мигрирует из Eclipse в IntelliJ или наоборот, здесь есть совет при работе с файлами свойств или другими файлами ресурсов.
это сводит с ума (стоило мне целый вечер, чтобы узнать), но обе IDE работают совершенно по-разному, когда речь заходит о поиске файлов ресурсов/свойств, когда вы хотите запускать локально из своей IDE или во время отладки. (Упаковка к А.jar также довольно отличается, но это документировано лучше.)
Предположим, у вас есть относительный путь реферала, как это в вашем коде:
new FileInputStream("xxxx.properties");(что удобно, если вы работаете с env specific .файлы свойств, которые вы не хотите упаковывать вместе с вашим JAR)
INTELLIJ
(Я использую 13.1 , но может быть действителен для других версий)
файл xxxx.свойства должны быть в Родительском каталоге корня проекта для того, чтобы быть подобраны во время выполнения, как это в IntelliJ. (Корневой каталог проекта находится в папке /src в)
затмение
затмение просто счастлив, когда xxxx.файл свойств находится в самом корне проекта.
Так IntelliJ ожидает .файл свойств должен быть на 1 уровень выше, чем Eclipse, когда на него ссылаются вот так !!
Это также влияет на способ выполнения кода, когда у вас есть эта же строка кода ( new FileInputStream("xxxx.свойства"); ) в вашем экспортированном виде .сосуд. Когда вы хотите быть гибким и не хотите упаковывать.свойства файл с вашим jar вам нужно будет выполнить jar, как показано ниже, чтобы ссылаться на него .свойства файла правильно из командной строки:
INTELLIJ ЭКСПОРТИРОВАЛ JAR
java -cp "/path/to_properties_file/:/path/to_jar/some.jar" com.bla.blabla.ClassContainingMainMethodECLIPSE ЭКСПОРТИРУЕТСЯ JAR
java -jar some.jarгде Eclipse exported executable jar будет просто ожидать ссылки .файл свойств на том же месте, где .jar-файл-это
Если вы когда-нибудь в конечном итоге с той же проблемой с Scala и SBT:
перейти к структуре проекта. Ярлык (CTRL + ALT + SHIFT + S)
в крайнем левом списке выберите Настройки проекта > модули
в списке модулей справа от этого выберите модуль вашего имени проекта (без сборки) и выберите вкладку источники
в середине разверните папку, в которой находится корень вашего проект для меня это
/home/<username>/IdeaProjects/<projectName>посмотрите на корневой раздел контента с правой стороны, красные пути-это каталоги, которые вы не сделали. Вы хотите поместить файл свойств в каталог ресурсов. Так что я создал
src/main/resourcesи поместите в него log4j. properties. Я считаю, что вы также можете изменить корень контента, чтобы поместить его туда, куда вы хотите (я этого не делал).Я запустил свой код с конфигурацией SBT, и он нашел мой log4j. properties файл.
возможно, это немного не по теме, поскольку на этот вопрос уже был дан ответ, но я испытал аналогичную проблему. В моем случае только некоторые ресурсы модульного теста были скопированы в выходную папку при компиляции. Мой настойчивость.xml на META-INF копирование но больше ничего.
в конце концов я "решил" проблему, переименовав проблемные файлы, упрекнув проект, а затем изменив имена файлов возвращаются к исходным. Не спрашивайте меня, почему это сработало, но это так. Мое лучшее предположение заключается в том, что каким-то образом мой проект IntelliJ немного не синхронизировался с файловой системой, и операция переименования вызвала какое-то внутреннее "повторное сканирование ресурсов".
У меня была аналогичная проблема с a log4j.xml файл для модульного теста, сделал все вышеперечисленное. Но понял, что это потому, что я только повторно запускал неудачный тест....если я перезапущу весь тестовый класс, будет выбран правильный файл. Это под Intelli-j 9.0.4


Comments