Für diejenigen unter Ihnen, die von Eclipse zu IntelliJ migrieren oder umgekehrt, ist hier ein Tipp, wenn Sie mit Eigenschaftendateien oder anderen Ressourcendateien arbeiten.
Es ist verrückt (es hat mich einen ganzen Abend gekostet, es herauszufinden), aber beide IDEs funktionieren sehr unterschiedlich, wenn es darum geht, nach Ressourcen- / Eigenschaftendateien zu suchen, wenn Sie lokal von Ihrer IDE oder während des Debuggens ausgeführt werden möchten. (Das Verpacken in ein .jar ist auch ganz anders, aber das ist besser dokumentiert.)
Angenommen, Sie haben eine relative Pfadverweisung wie diese in Ihrem Code:
new FileInputStream("xxxx.properties");
(Dies ist praktisch, wenn Sie mit env-spezifischen .properties-Dateien arbeiten, die Sie nicht zusammen mit Ihrer JAR packen möchten.)
INTELLIJ
(Ich benutze 13.1, könnte aber für weitere Versionen gültig sein)
Die Datei xxxx.properties muss sich im PARENT-Verzeichnis des Projekts ROOT befinden, damit sie zur Laufzeit in IntelliJ zur Laufzeit abgerufen werden kann. (Im Projekt ROOT befindet sich der Ordner / src.)
FINSTERNIS
Eclipse ist nur glücklich, wenn sich die Datei xxxx.properties im Projekt ROOT selbst befindet.
Daher erwartet IntelliJ, dass die .properties-Datei 1 Ebene höher als Eclipse ist, wenn auf sie so verwiesen wird !!
Dies wirkt sich auch auf die Art und Weise aus, wie Sie Ihren Code ausführen müssen, wenn Sie dieselbe Codezeile (neuer FileInputStream ("xxxx.properties");) in Ihrer exportierten JAR-Datei haben. Wenn Sie agil sein und die .properties-Datei nicht mit Ihrer JAR-Datei verpacken möchten, müssen Sie die JAR-Datei wie folgt ausführen, um die .properties-Datei über die Befehlszeile korrekt zu referenzieren:
INTELLIJ EXPORTED JAR
java -cp "/path/to_properties_file/:/path/to_jar/some.jar" com.bla.blabla.ClassContainingMainMethod
ECLIPSE EXPORTED JAR
java -jar some.jar
Wenn das von Eclipse exportierte ausführbare JAR nur erwartet, dass sich die referenzierte .properties-Datei am selben Speicherort befindet wie die .jar-Datei