Я запускаю простую программу Java из IntelliJ IDE, используя меню «Выполнить» -> «Выполнить». Работает нормально. Теперь я хочу добавить логирование log4j.
Я добавил папку ресурсов в корень моего проекта. Я добавил в эту папку файл log4j.properties. Я изменил код, чтобы что-то записать.
Как правильно указать IntelliJ включить папку ресурсов в путь к классам, чтобы файл свойств был виден?
С IntelliJ 8 я мог угадывать, как пьяная обезьяна, и в конце концов заставить его работать. Сейчас у меня 9, и я совершенно неудачник. Я уже час пытаюсь. Как насчет опции «Добавить в путь к классам»? / дым / вентиляция / rant
java
intellij-idea
classpath
Тони Эннис
источник
источник
Ответы:
Попробуй это:
источник
На самом деле, у вас есть как минимум 2 способа сделать это, первый способ описан ColinD, вы просто настраиваете папку «ресурсы» как папку «Источники» в IDEA. Если Patterns Ресурс содержит расширение вашего ресурса, то он будет скопирован в выходной каталог , когда вы сделать проект и выходной каталог автоматически является путь к классам приложения.
Другой распространенный способ - добавить папку «ресурсы» напрямую в путь к классам. Перейти к структуре проекта | Модули | Ваш модуль | Зависимости , нажмите Добавить , Библиотека модулей с одним входом , укажите путь к папке «ресурсы».
Еще одно решение - поместить файл log4j.properties непосредственно в корень Source вашего проекта (в каталог пакета по умолчанию). Это то же самое, что и первый способ, за исключением того, что вам не нужно добавлять еще один корень Source в настройках Module Paths , файл будет скопирован в выходной каталог на Make.
Если вы хотите протестировать с различными конфигурациями log4j, может быть проще указать пользовательский файл конфигурации непосредственно в конфигурации запуска / отладки , параметры виртуальной машины будут выглядеть так:
-Dlog4j.configuration=file:/c:/log4j.properties
,источник
У меня такая же проблема, и это меня очень раздражает !!
Я всегда думал, что меня предложили сделать как ответ 2. Раньше это работало в Intellij 9 (теперь использую 10).
Однако я понял, что добавление этой строки в мой файл maven pom помогает:
источник
Я потратил довольно много времени, выясняя, как это сделать в Intellij 13x. Я, по-видимому, никогда не добавлял файлы свойств к артефактам, которые требовали их, что является отдельным шагом в Intellij. Приведенная ниже настройка также работает, когда у вас есть файл свойств, который используется несколькими модулями.
источник
Столкнулся с аналогичной проблемой при добавлении файлов с расширениями .ini в путь к классам. Нашел этот ответ , который должен добавить его в Настройки -> Компилятор -> Шаблоны ресурсов -> [...]; *. Ini
источник
Если у вас когда-нибудь возникнет такая же проблема со Scala и SBT:
Перейти к структуре проекта. Ярлык (CTRL + ALT + SHIFT + S)
В крайнем левом списке выберите Настройки проекта> Модули.
В списке модулей справа от него выберите модуль с именем вашего проекта (без сборки) и выберите вкладку источников.
В середине разверните папку, которая является для меня корнем вашего проекта,
/home/<username>/IdeaProjects/<projectName>
Посмотрите на раздел Content Root справа, красные пути - это каталоги, которые вы еще не создали. Вы захотите поместить файл свойств в каталог ресурсов. Итак, я создал
src/main/resources
и поместил в него log4j.properties. Я считаю, что вы также можете изменить Content Root, чтобы разместить его где угодно (я этого не делал).Я запустил свой код с конфигурацией SBT, и он нашел мой файл log4j.properties.
источник
Для тех из вас, кто переходит с Eclipse на IntelliJ или наоборот, здесь есть совет при работе с файлами свойств или другими файлами ресурсов.
Это сводит с ума (мне потребовался целый вечер, чтобы выяснить это), но обе IDE работают по-разному, когда дело доходит до поиска файлов ресурсов / свойств, когда вы хотите запускать локально из своей среды IDE или во время отладки. (Упаковка в .jar тоже совсем другая, но это лучше документировано.)
Предположим, у вас есть относительный путь в вашем коде:
(что удобно, если вы работаете с файлами .properties, специфичными для env, которые вы не хотите упаковывать вместе с JAR)
IntelliJ
(Я использую 13.1, но может быть действителен для других версий)
Файл xxxx.properties должен находиться в каталоге PARENT проекта ROOT, чтобы его можно было подобрать во время выполнения, как это в IntelliJ. (В проекте ROOT находится папка / src)
ЗАТМЕНИЕ
Eclipse просто счастлив, когда файл xxxx.properties находится в самом ROOT проекта.
Итак, IntelliJ ожидает, что файл .properties будет на 1 уровень выше, чем Eclipse, когда на него ссылаются так !!
Это также влияет на способ выполнения вашего кода, когда у вас есть такая же строка кода (new FileInputStream ("xxxx.properties");) в вашем экспортированном .jar. Если вы хотите быть гибкими и не хотите упаковывать файл .properties вместе с jar-файлом, вам придется выполнить jar-файл, как показано ниже, чтобы правильно ссылаться на файл .properties из командной строки:
INTELLIJ EXPORTED JAR
ЭКСПОРТНАЯ БАНКА ECLIPSE
где экспортированный исполняемый jar-файл Eclipse будет ожидать, что указанный файл .properties находится в том же месте, что и файл .jar
источник
Возможно, это немного не по теме, поскольку на вопрос уже был дан ответ, но у меня возникла аналогичная проблема. В моем случае только некоторые ресурсы модульного теста были скопированы в выходную папку при компиляции. Мой persistence.xml в папке META-INF был скопирован, но больше ничего .
В конце концов, я «решил» проблему, переименовав проблемные файлы, перестроив проект, а затем изменив имена файлов обратно на исходные. Не спрашивайте меня, почему это сработало, но это так. Я предполагаю, что каким-то образом мой проект IntelliJ немного рассинхронизировался с файловой системой, и операция переименования вызвала какое-то внутреннее «повторное сканирование ресурсов».
источник
Это одна из моих глупых ошибок. Я потратил много времени, пытаясь отладить эту проблему, и попробовал все ответы, опубликованные выше, но, в конце концов, это была одна из многих моих глупых ошибок.
Я использовал
org.apache.logging.log4j.Logger
(: fml :), тогда как должен был использоватьorg.apache.log4j.Logger
. Использование этого правильного регистратора спасло мне вечер.источник
У меня была аналогичная проблема с файлом log4j.xml для модульного теста, сделал все вышеперечисленное. Но выяснилось, что это произошло потому, что я только повторно запустил неудачный тест ... если я повторно запустил весь тестовый класс, будет выбран правильный файл. Это под Intelli-j 9.0.4
источник