Laden von Dateien durch getClass().getResource()
Die Methode getClass().getResource() kann zum Laden von Ressourcendateien verwendet werden . Bei der Bereitstellung aus einer Entwicklungsumgebung wie Eclipse funktioniert diese Methode normalerweise reibungslos. Das Ausführen der Anwendung über die Befehlszeile kann jedoch manchmal zu einer Nullzeiger-Ausnahme führen.
Dieses Problem tritt auf, weil getClass().getResource() den Klassenlader zum Abrufen der Ressource verwendet. Um zugänglich zu sein, muss die Ressource im Klassenpfad enthalten sein. Bei Verwendung von Eclipse werden der Quellordner und alle seine Komponenten, einschließlich Ressourcendateien, standardmäßig im Klassenpfad abgelegt. Daher können Ressourcen aus demselben Paket oder Verzeichnis wie die Klasse geladen werden.
Im Gegensatz dazu wird der Klassenpfad bei der Ausführung über die Befehlszeile nicht automatisch konfiguriert. Die Datei oder das Verzeichnis, die die Ressource enthält, muss explizit zum Klassenpfad hinzugefügt werden. Eine Methode, dies zu erreichen, besteht darin, die Umgebungsvariable CLASSPATH auf den Pfad der Datei oder des Verzeichnisses festzulegen.
Es ist wichtig zu beachten, dass die direkte Verwendung von FileInputStream, wie im Code gezeigt, zum Laden von Ressourcen nicht empfohlen wird. Verwenden Sie stattdessen getResourceAsStream(), um einen InputStream abzurufen. Dies gewährleistet die Kompatibilität bei der Bereitstellung als JAR-Datei oder beim Laden von Klassen über ein Netzwerk.
Darüber hinaus können Sie mit der Methode getResource() den Speicherort einer Ressource relativ zum Klassenpaket angeben. Zum Beispiel:
Foo.class.getResourceAsStream("Test.properties")
Ladet Test.properties aus demselben Paket wie Foo.
Foo.class.getResourceAsStream("/com/foo/bar/Test.properties")
Ladet Test.properties aus dem Paket com.foo.bar.
Durch die Einhaltung dieser Richtlinien können Sie Ressourcendateien erfolgreich mit getClass().getResource() laden, wenn Sie Ihre Anwendung über die Befehlszeile ausführen.
Das obige ist der detaillierte Inhalt vonWarum schlägt getClass().getResource() bei der Ausführung über die Befehlszeile fehl?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!