Estoy ejecutando un programa Java simple desde IntelliJ IDE usando el menú Ejecutar-> Ejecutar. Funciona bien. Ahora quiero agregar el registro log4j.
Agregué una carpeta de recursos en la raíz de mi proyecto. Agregué un archivo log4j.properties en esa carpeta. Cambié el código para registrar algo.
¿Cuál es la forma correcta de decirle a IntelliJ que incluya la carpeta de recursos en la ruta de clase para que se vea el archivo de propiedades?
Con IntelliJ 8 podía adivinar como un mono borracho y, finalmente, hacer que funcionara. Ahora tengo 9 y no tengo éxito. Lo he intentado durante una hora. ¿Qué tal una opción "Agregar a classpath" en alguna parte? / fume / vent / despotricar
java
intellij-idea
classpath
Tony Ennis
fuente
fuente
Respuestas:
Prueba esto:
fuente
En realidad, tiene al menos 2 formas de hacerlo, la primera forma la describe ColinD, simplemente configure la carpeta "recursos" como carpeta de fuentes en IDEA. Si los Patrones de recursos contienen la extensión de su recurso, entonces se copiará al directorio de salida cuando haga que el proyecto y el directorio de salida sea automáticamente una ruta de clase de su aplicación.
Otra forma común es agregar la carpeta "recursos" a la ruta de clases directamente. Ir a Estructura del proyecto | Módulos | Su módulo | Dependencias , haga clic en Agregar , Biblioteca de módulos de entrada única , especifique la ruta a la carpeta "recursos".
Otra solución más sería colocar el archivo log4j.properties directamente debajo de la raíz de origen de su proyecto (en el directorio de paquetes predeterminado). Es lo mismo que la primera forma, excepto que no necesita agregar otra raíz de origen en la configuración de Rutas de módulo , el archivo se copiará en el directorio de salida en Make.
Si desea probar con diferentes configuraciones de log4j, puede ser más fácil especificar un archivo de configuración personalizado directamente en la configuración Ejecutar / Depurar , los parámetros de VM presentados como:
-Dlog4j.configuration=file:/c:/log4j.properties
.fuente
Tengo el mismo problema y me molesta tremendamente !!
Siempre pensé que se suponía que debía hacer la respuesta 2. Eso solía funcionar en Intellij 9 (ahora usando 10).
Sin embargo, descubrí que agregar estas líneas a mi archivo pom de maven ayuda:
fuente
Pasé bastante tiempo averiguando cómo hacer esto en Intellij 13x. Al parecer, nunca agregué los archivos de propiedades a los artefactos que los requerían, lo cual es un paso separado en Intellij. La configuración a continuación también funciona cuando tiene un archivo de propiedades compartido por varios módulos.
fuente
Enfrenté un desafío similar al agregar archivos con extensiones .ini a la ruta de clases. Encontré esta respuesta , que es agregarla a Preferencias -> Compilador -> Patrones de recursos -> [...]; *. Ini
fuente
Si alguna vez termina con el mismo problema con Scala y SBT:
Vaya a Estructura del proyecto. El atajo es (CTRL + ALT + MAYÚS + S)
En la lista del extremo izquierdo, elija Configuración del proyecto> Módulos
En la lista de módulos a la derecha, seleccione el módulo del nombre de su proyecto (sin la compilación) y elija la pestaña de fuentes
En el medio, expanda la carpeta que la raíz de su proyecto para mí es
/home/<username>/IdeaProjects/<projectName>
Mire la sección Raíz de contenido en el lado derecho, las rutas rojas son directorios que no ha creado. Querrá poner el archivo de propiedades en un directorio de Recursos. Así que creé
src/main/resources
y puse log4j.properties en él. Creo que también puedes modificar Content Root para ponerlo donde quieras (yo no hice esto).Ejecuté mi código con una configuración SBT y encontré mi archivo log4j.properties.
fuente
Para aquellos de ustedes que migren de Eclipse a IntelliJ o al revés, aquí hay un consejo cuando trabajen con archivos de propiedades u otros archivos de recursos.
Es enloquecedor (me costó toda una noche averiguarlo) pero ambos IDE funcionan de manera bastante diferente cuando se trata de buscar archivos de recursos / propiedades cuando desea ejecutar localmente desde su IDE o durante la depuración. (El empaquetado en un .jar también es bastante diferente, pero eso está mejor documentado).
Suponga que tiene una referencia de ruta relativa como esta en su código:
(lo cual es conveniente si trabaja con archivos .properties específicos de env que no desea empaquetar junto con su JAR)
INTELLIJ
(Yo uso 13.1, pero podría ser válido para más versiones)
El archivo xxxx.properties debe estar en el directorio PADRE del proyecto ROOT para poder ser recogido en tiempo de ejecución como este en IntelliJ. (El proyecto ROOT es donde reside la carpeta / src)
ECLIPSE
Eclipse está feliz cuando el archivo xxxx.properties está en el proyecto ROOT.
¡Entonces IntelliJ espera que el archivo .properties sea 1 nivel más alto que Eclipse cuando se hace referencia a él de esta manera!
Esto también afecta la forma en que tiene que ejecutar su código cuando tiene esta misma línea de código (nuevo FileInputStream ("xxxx.properties");) en su .jar exportado. Cuando quiera ser ágil y no quiera empaquetar el archivo .properties con su jar, tendrá que ejecutar el jar como se muestra a continuación para hacer referencia al archivo .properties correctamente desde la línea de comando:
TARRO EXPORTADO INTELLIJ
TARRO ECLIPSE EXPORTADO
donde el archivo ejecutable exportado de Eclipse solo esperará que el archivo .properties al que se hace referencia esté en la misma ubicación que donde está el archivo .jar
fuente
Quizás esto esté un poco fuera de tema, ya que la pregunta ya ha sido respondida, pero he experimentado un problema similar. En mi caso, solo algunos de los recursos de prueba unitaria se copiaron en la carpeta de salida durante la compilación. Mi persistence.xml en la carpeta META-INF se copió pero nada más .
Al final, "resolví" el problema cambiando el nombre de los archivos problemáticos, reconstruyendo el proyecto y luego cambiando los nombres de los archivos por los originales. No me pregunten por qué funcionó, pero funcionó. Mi mejor suposición es que, de alguna manera, mi proyecto IntelliJ se había desincronizado un poco con el sistema de archivos y la operación de cambio de nombre provocó algún tipo de "reexploración de recursos" interna.
fuente
Este es uno de los errores tontos que he cometido. Pasé mucho tiempo tratando de solucionar este problema y probé todas las respuestas publicadas anteriormente, pero al final, fue uno de mis muchos errores tontos.
Estaba usando
org.apache.logging.log4j.Logger
(: fml :) mientras que debería haber usadoorg.apache.log4j.Logger
. Usar este registrador correcto me salvó la noche.fuente
Tuve un problema similar con un archivo log4j.xml para una prueba unitaria, hice todo lo anterior. Pero descubrí que era porque solo estaba volviendo a ejecutar una prueba fallida ... si vuelvo a ejecutar toda la clase de prueba, se recoge el archivo correcto. Esto está bajo Intelli-j 9.0.4
fuente