Estou executando um programa Java simples a partir do IntelliJ IDE usando o menu Executar-> Executar. Funciona bem. Agora eu quero adicionar o log44.
Eu adicionei uma pasta de recursos na raiz do meu projeto. Adicionei um arquivo log4j.properties nessa pasta. Mudei o código para registrar algo.
Qual é a maneira correta de dizer ao IntelliJ para incluir a pasta resources no caminho de classe para que o arquivo de propriedades seja visto?
Com o IntelliJ 8, eu poderia adivinhar como um macaco bêbado e, eventualmente, fazê-lo funcionar. Tenho 9 agora e não tenho sucesso. Estou tentando há uma hora. Que tal uma opção "Adicionar ao caminho de classe" em algum lugar? / fumaça / ventilação / discurso retórico
java
intellij-idea
classpath
Tony Ennis
fonte
fonte
Respostas:
Tente o seguinte:
fonte
Na verdade, você tem pelo menos duas maneiras de fazer isso, a primeira maneira é descrita pelo ColinD, basta configurar a pasta "resources" como pasta Sources no IDEA. Se os Padrões de Recursos contiverem a extensão de seu recurso, ele será copiado para o diretório de saída quando você Criar o diretório de projeto e saída for automaticamente um caminho de classe do seu aplicativo.
Outra maneira comum é adicionar a pasta "recursos" diretamente ao caminho da classe. Vá para Estrutura do Projeto | Módulos Seu módulo | Dependências , clique em Adicionar , Biblioteca de módulos de entrada única , especifique o caminho para a pasta "recursos".
Outra solução seria colocar o arquivo log4j.properties diretamente na raiz de origem do seu projeto (no diretório do pacote padrão). É o mesmo da primeira maneira, exceto que você não precisa adicionar outra raiz de origem nas configurações dos Caminhos do módulo , o arquivo será copiado para o diretório de saída no Make.
Se você deseja testar com diferentes configurações do log4j, pode ser mais fácil especificar um arquivo de configuração personalizado diretamente na configuração Executar / Depurar , os parâmetros da VM arquivados como:
-Dlog4j.configuration=file:/c:/log4j.properties
.fonte
Eu tenho o mesmo problema e isso me irrita tremendamente !!
Eu sempre pensei que deveria fazer a resposta 2. Isso costumava funcionar no Intellij 9 (agora usando 10).
No entanto, descobri que adicionar essas linhas ao meu arquivo maven pom ajuda:
fonte
Passei bastante tempo descobrindo como fazer isso no Intellij 13x. Aparentemente, nunca adicionei os arquivos de propriedades aos artefatos que os exigiam, o que é uma etapa separada no Intellij. A configuração abaixo também funciona quando você possui um arquivo de propriedades que é compartilhado por vários módulos.
fonte
Enfrentou um desafio semelhante ao adicionar arquivos com extensões .ini ao caminho de classe. Encontrei esta resposta , que é adicioná-la a Preferências -> Compilador -> Padrões de recursos -> [...]; *. Ini
fonte
Se você acabar com o mesmo problema com o Scala e o SBT:
Vá para Estrutura do Projeto. O atalho é (CTRL + ALT + SHIFT + S)
Na lista da extrema esquerda, escolha Configurações do projeto> Módulos
Na lista de módulos, selecione o módulo com o nome do seu projeto (sem a compilação) e escolha a guia fontes
No meio, expanda a pasta que a raiz do seu projeto para mim é
/home/<username>/IdeaProjects/<projectName>
Veja a seção Raiz de conteúdo, no lado direito, os caminhos vermelhos são diretórios que você não criou. Você deseja colocar o arquivo de propriedades em um diretório de Recursos. Então eu criei
src/main/resources
e coloquei log4j.properties nele. Acredito que você também pode modificar a raiz do conteúdo para colocá-la onde quiser (não fiz isso).Eu executei meu código com uma configuração do SBT e ele encontrou meu arquivo log4j.properties.
fonte
Para quem migra do Eclipse para o IntelliJ ou o contrário, é uma dica ao trabalhar com arquivos de propriedades ou outros arquivos de recursos.
É enlouquecedor (custa uma noite inteira para descobrir), mas o trabalho do IDE é bem diferente quando se trata de procurar arquivos de recursos / propriedades quando você deseja executar localmente a partir do IDE ou durante a depuração. (Empacotar em um .jar também é bem diferente, mas isso é melhor documentado.)
Suponha que você tenha uma referência de caminho relativa como esta em seu código:
(o que é conveniente se você trabalha com arquivos .properties específicos da env que não deseja empacotar junto com seu JAR)
INTELLIJ
(Eu uso 13.1, mas poderia ser válido para mais versões)
O arquivo xxxx.properties precisa estar no diretório PARENT do projeto ROOT para ser coletado em tempo de execução como este no IntelliJ. (O projeto ROOT é o local onde a pasta / src reside)
ECLIPSE
O Eclipse fica feliz quando o arquivo xxxx.properties está no próprio projeto ROOT.
Portanto, o IntelliJ espera que o arquivo .properties seja 1 nível mais alto que o Eclipse quando for referenciado dessa maneira !!
Isso também afeta a maneira como você deve executar seu código quando possui a mesma linha de código (novo FileInputStream ("xxxx.properties");) em seu .jar exportado. Quando você quer ser ágil e não deseja empacotar o arquivo .properties com seu jar, será necessário executá-lo como abaixo para fazer referência ao arquivo .properties corretamente na linha de comando:
JAR EXPORTADO INTELLIJ
JARRO EXPORTADO ECLIPSE
em que o jar executável exportado pelo Eclipse apenas espera que o arquivo .properties referenciado esteja no mesmo local em que o arquivo .jar está
fonte
Talvez isso seja um pouco fora de tópico, visto que a pergunta já foi respondida, mas experimentei um problema semelhante. No meu caso, apenas alguns dos recursos de teste de unidade foram copiados para a pasta de saída após a compilação. Meu persistence.xml na pasta META-INF foi copiado, mas nada mais .
No final, "resolvi" o problema renomeando os arquivos problemáticos, reconstruindo o projeto e depois alterando os nomes dos arquivos para os originais. Não me pergunte por que isso funcionou, mas funcionou. Meu melhor palpite é que, de alguma forma, meu projeto IntelliJ ficou um pouco fora de sincronia com o sistema de arquivos e a operação de renomeação acionou algum tipo de "nova verificação de recursos" interna.
fonte
Este é um dos erros estúpidos que cometi. Passei muito tempo tentando depurar esse problema e tentei todas as respostas postadas acima, mas no final, esse foi um dos meus muitos erros estúpidos.
Eu estava usando
org.apache.logging.log4j.Logger
(: fml :) enquanto eu deveria ter usadoorg.apache.log4j.Logger
. O uso desse registrador correto salvou minha noite.fonte
Eu tive um problema semelhante com um arquivo log4j.xml para um teste de unidade, fiz tudo isso acima. Mas descobri que era porque eu estava apenas re-executando um teste que falhou ... se eu re-executar toda a classe de teste, o arquivo correto será coletado. Isso está no Intelli-j 9.0.4
fonte