Es ist vollkommen egal, ob aus einer IDE gestartet oder ob es eine Jar ist oder sonst was. Es kommt für Ressourcen nur drauf an, ob diese im Classpath liegen. Wenn ja, dann kann man auf diese immer auf dieselbe Weise zugreifen (die getResource-Methoden). Vorteil dabei ist, dass z.B. so ein Ordner, der in den Classpath aufgenommen wurde, sonst wo liegen kann, er muss nicht im “Programmverzeichnis” oder daneben oder sowas liegen. Man muss nur drauf achten, dass beim Start des Programms der Classpath richtig gesetzt wird. So, klingt alles schön und gut, leider hat diese Vorgehensweise auch einen Nachteil. Schreibzugriffe sind so nicht möglich, zumindest nicht, wenn die Ressource, auf die man zugreift, sich innerhabl eines Archives befindet. Ob Schreibzugriffe bei Ressourcen, die vom Dateisystem aus geladen werden, funktionieren, habe ich noch nie ausprobiert, aber ist auch eher unwichtig, denn wenn ich Schreibzugriffe habe, dann natürlich über das entsprechende Vorgehen auf dem Dateisystem, dafür ist der Classpath in meinen Augen eher ungeeignet. Aber wie gesagt, alles, was sich innerhalb von Archiven, also auch von Jars, befindet, ist nicht über File ansprechbar. Also musst du das Archiv entweder zuerst entpacken (kann ja auch die anwendung selbst übernehmen) oder aber über alternative Wege auf die Inhalte zugreifen, z.B. JarFile, als Ressource laden oder über NIO2.
Was das jetzt mit einer IDE zu tun hat, ist, dass die gängingen IDEs s.g. Source-Folder im Projekt anlegen können (meist ist src so ein Source-Folder). Alles, was sich in den Source-Foldern befindet, wird beim Kompilieren in die Ausgabeordner (bin, out, output, classes, target, whatever) kopiert und ist dann ebenfalls über den Classpath verfügbar. Kann auch sein, dass diese Dateien dann auch über Dateisystemzugriffe in Relation zur Anwendung verwendbar sind, aber das muss nicht sein, denn Eclipse z.B. setzt als working directory das Projektverzeichnis und nicht den bin-Ordner (das muss man wissen, das führt bei vielen zu imensen Problemen und falschem Verständnis für die gesamte Materie bezüglich Ressourcen und Dateiorganisation der Anwendung). Dieser lässt sich aber auch ändern, aber ist nicht nötig, habe ich jedenfalls noch nie gebraucht. Einfach lernen mit dem Classpath richtig zu arbeiten, dann muss man über sowas auch nicht nachdenken.