Per quelli di voi che migrano da Eclipse a IntelliJ o viceversa, ecco un suggerimento quando si lavora con file di proprietà o altri file di risorse.
È esasperante (mi è costato un'intera serata per scoprirlo) ma entrambi gli IDE funzionano in modo abbastanza diverso quando si tratta di cercare file di risorse / proprietà quando si desidera eseguire localmente dal proprio IDE o durante il debug. (Anche il packaging in un .jar è abbastanza diverso, ma è documentato meglio.)
Supponi di avere un riferimento di percorso relativo come questo nel tuo codice:
new FileInputStream("xxxx.properties");
(il che è comodo se lavori con file .properties specifici di env che non vuoi impacchettare insieme al tuo JAR)
IntelliJ
(Io uso 13.1, ma potrebbe essere valido per più versioni)
Il file xxxx.properties deve trovarsi nella directory PARENT del progetto ROOT per poter essere prelevato a runtime in questo modo in IntelliJ. (La ROOT del progetto è dove risiede la cartella / src)
ECLISSE
Eclipse è solo felice quando il file xxxx.properties si trova nella ROOT del progetto stesso.
Quindi IntelliJ si aspetta che il file .properties sia di 1 livello più alto di Eclipse quando viene referenziato in questo modo !!
Ciò influisce anche sul modo in cui devi eseguire il codice quando hai questa stessa riga di codice (new FileInputStream ("xxxx.properties");) nel tuo file .jar esportato. Quando vuoi essere agile e non vuoi impacchettare il file .properties con il tuo jar, dovrai eseguire il jar come di seguito per fare riferimento correttamente al file .properties dalla riga di comando:
VASO ESPORTATO INTELLIJ
java -cp "/path/to_properties_file/:/path/to_jar/some.jar" com.bla.blabla.ClassContainingMainMethod
VASO ESPORTATO ECLIPSE
java -jar some.jar
dove il jar eseguibile esportato da Eclipse si aspetta solo che il file .properties di riferimento si trovi nella stessa posizione in cui si trova il file .jar