Dla tych z Was, którzy dokonują migracji z Eclipse do IntelliJ lub odwrotnie, tutaj jest wskazówka dotycząca pracy z plikami właściwości lub innymi plikami zasobów.
To irytujące (kosztowało mnie cały wieczór, żeby się dowiedzieć), ale oba IDE działają zupełnie inaczej, jeśli chodzi o wyszukiwanie plików zasobów / właściwości, gdy chcesz uruchomić lokalnie ze swojego IDE lub podczas debugowania. (Pakowanie do pliku .jar jest również zupełnie inne, ale to lepiej udokumentowane).
Załóżmy, że w kodzie znajduje się odwołanie do ścieżki względnej, takie jak to:
new FileInputStream("xxxx.properties");
(co jest wygodne, jeśli pracujesz z plikami .properties specyficznymi dla środowiska, których nie chcesz pakować razem z plikiem JAR)
INTELLIJ
(Używam 13.1, ale może być ważny dla większej liczby wersji)
Plik xxxx.properties musi znajdować się w katalogu PARENT ROOT projektu, aby można go było pobrać w czasie wykonywania w IntelliJ. (ROOT projektu to miejsce, w którym znajduje się folder / src)
ZAĆMIENIE
Eclipse jest po prostu szczęśliwy, gdy plik xxxx.properties znajduje się w samym katalogu ROOT projektu.
Więc IntelliJ spodziewa się, że plik .properties będzie o 1 poziom wyższy niż Eclipse, gdy tak się do niego odwołuje !!
Ma to również wpływ na sposób wykonywania kodu, gdy masz tę samą linię kodu (nowy FileInputStream ("xxxx.properties");) w wyeksportowanym pliku .jar. Jeśli chcesz być zwinny i nie chcesz spakować pliku .properties ze swoim jar, musisz wykonać jar jak poniżej, aby poprawnie odwołać się do pliku .properties z wiersza poleceń:
EKSPORTOWANY SŁOIK INTELLIJ
java -cp "/path/to_properties_file/:/path/to_jar/some.jar" com.bla.blabla.ClassContainingMainMethod
EKSPORTOWANY SŁOIK ECLIPSE
java -jar some.jar
gdzie wyeksportowany plik jar wykonywalny Eclipse będzie po prostu oczekiwał, że przywoływany plik .properties będzie w tym samym miejscu, w którym znajduje się plik .jar