Pour ceux d'entre vous qui migrent d'Eclipse vers IntelliJ ou l'inverse, voici une astuce pour travailler avec des fichiers de propriétés ou d'autres fichiers de ressources.
C'est exaspérant (cela m'a coûté toute une soirée pour le découvrir) mais les deux IDE fonctionnent de manière assez différente lorsqu'il s'agit de rechercher des fichiers de ressources/profils lorsque vous voulez les exécuter localement depuis votre IDE ou pendant le débogage. (Le packaging en .jar est également très différent, mais il est mieux documenté).
Supposons que vous ayez une référence de chemin relatif comme ceci dans votre code :
new FileInputStream("xxxx.properties");
(ce qui est pratique si vous travaillez avec des fichiers .properties spécifiques à l'environnement que vous ne voulez pas empaqueter avec votre JAR).
INTELLIJ
(J'utilise la 13.1, mais cela peut être valable pour d'autres versions).
Le fichier xxxx.properties doit se trouver dans le répertoire PARENT de la racine du projet afin d'être récupéré au moment de l'exécution comme ceci dans IntelliJ. (La racine du projet est l'endroit où se trouve le dossier /src).
ECLIPSE
Eclipse est juste heureux quand le fichier xxxx.properties est à la racine du projet lui-même.
Donc IntelliJ s'attend à ce que le fichier .properties soit d'un niveau supérieur à celui d'Eclipse lorsqu'il est référencé de cette façon ! !!
Cela affecte également la façon dont vous devez exécuter votre code lorsque vous avez cette même ligne de code ( new FileInputStream("xxxx.properties") ; ) dans votre .jar exporté. Si vous voulez être agile et ne voulez pas empaqueter le fichier .properties avec votre jar, vous devrez exécuter le jar comme ci-dessous afin de référencer le fichier .properties correctement à partir de la ligne de commande :
JAR EXPORTÉ PAR INTELLIJ
java -cp "/path/to_properties_file/:/path/to_jar/some.jar" com.bla.blabla.ClassContainingMainMethod
JAR EXPORTÉ PAR ECLIPSE
java -jar some.jar
où l'exécutable jar exporté par Eclipse s'attendra à ce que le fichier .properties référencé se trouve au même endroit que le fichier .jar.
0 votes
Ok, la situation est résolue. Il s'agit d'une nouvelle installation d'IntelliJ - log4J n'est PAS inclus par défaut. Dans mon code, j'avais importé le logger stock, pas log4j. Le logger du stock supporte des méthodes similaires donc il n'était pas évident que j'utilisais le mauvais logger ! Il n'est pas surprenant qu'il ne lise pas le fichier de propriétés de log4j ou qu'il ne signale pas que je dois configurer log4j. Quel coup de pied dans les dents !
0 votes
J'ai trouvé une bonne description pour un débutant en log4j. tuttlem.github.io/2015/02/08/demarrer-logging-avec-log4j2.html