ich mit Code konfrontiert wurde, die einige Konfigurationsdateien aus dem Verzeichnis, in dem die .class-Datei selbst für die Klasse zu lesen versucht ist:Abrufen der Pfad zu dem Verzeichnis einer bestimmten Klasse Datei
File[] configFiles = new File(
this.getClass().getResource(".").getPath()).listFiles(new FilenameFilter() {
public boolean accept(File dir, String name) {
return name.endsWith(".xml");
}
});
dies offenbar funktioniert in einigen Fällen (wenn der Code in Resin ausgeführt wird, vielleicht), aber für mich läuft Tomcat einfach mit NPE, weil getClass().getResource(".")
null
zurückgibt.
Ein Kollege schlug vor, eine weitere Konfigurationsdatei zu erstellen, die eine Liste aller ".xml" -Konfigurationsdateien enthält (was in der Tat funktionieren würde, da es ziemlich statisch bleibt), und Sie sollten nicht wirklich versuchen, so etwas zu tun Java.
Immer noch, ich frage mich, ob es einige nette Weise gibt, die universell funktioniert, um den Pfad zu dem Verzeichnis zu erhalten, in dem sich eine bestimmte .class-Datei befindet? Ich denke, man es aus dem Weg der .class-Datei selbst wie diese bekommen konnte:
new File(this.getClass().getResource("MyClass.class").getPath()).getParent()
... aber ist dies der einzige/sauberste Weg?
bearbeiten: Um zu klären, gehen wir davon aus wissen dies in einer Anwendung in einer solchen Art und Weise eingesetzt wird verwendet, dass MyClass.class wird immer von einer Class-Datei auf der Festplatte gelesen werden, und die Ressourcen, da sein in das gleiche Verzeichnis.
diese Frage im Zusammenhang gefunden: http://stackoverflow.com/questions/778187/getting-directory-path-to-class-file-containing-main Die akzeptierte Antwort nutzt im Grunde, was ich vorgeschlagen [getResource ("MyClass.class"). GetPath()] ... aber es beantwortet nicht direkt, ob das der einzige oder der beste Weg ist. – Jonik