Heim  >  Artikel  >  Java  >  Wie lade ich Ressourcendateien über die Befehlszeile mit „getClass().getResource()“?

Wie lade ich Ressourcendateien über die Befehlszeile mit „getClass().getResource()“?

DDD
DDDOriginal
2024-11-06 17:00:03938Durchsuche

How to Load Resource Files from the Command Line Using `getClass().getResource()`?

Dateiladen mit getClass().getResource()

Bei der Arbeit mit Ressourcendateien, wie z. B. Eigenschaftendateien, ist die Verwendung von getClass().getResource(path) um sie zu laden. Allerdings treten beim Ausführen von Code über die Befehlszeile Unterschiede im Vergleich zu einer IDE wie Eclipse auf.

Verhalten innerhalb von Eclipse

In Eclipse ist getClass().getResource( Die Methode „Pfad“ lädt Dateien effektiv aus dem Quellordner. Wenn die Ressourcendatei (z. B. Test.properties) im selben Paket wie die Java-Datei abgelegt wird, kann innerhalb von Eclipse ohne Probleme darauf zugegriffen werden.

Problem mit der Befehlszeilenbereitstellung

Beim Bereitstellen der Anwendung außerhalb von Eclipse über die Befehlszeile ist die Ressourcendatei möglicherweise nicht im Klassenpfad vorhanden. Folglich kann getClass().getResource(path) die Datei nicht laden, was zu einer Nullzeigerausnahme führt.

Lösung

Um dieses Problem zu beheben, stellen Sie sicher, dass Die Ressourcendatei ist im Klassenpfad enthalten. Dies kann erreicht werden, indem die Datei im selben Verzeichnis wie die kompilierte Klassendatei abgelegt oder in eine JAR-Datei gepackt wird.

Alternativer Ansatz

Anstelle der Verwendung von getClass ().getResource(path), erwägen Sie die Verwendung von getClass().getResourceAsStream(path), um einen InputStream für die Ressourcendatei zu erstellen. Diese Methode vermeidet die Notwendigkeit, den URI in eine Datei zu konvertieren, und übernimmt das Laden von Dateien aus verschiedenen Quellen, z. B. dem Dateisystem, einer JAR-Datei oder über ein Netzwerk.

Achten Sie abschließend auf das übergebene Argument die getClass().getResourceAsStream-Methode. Durch die Verwendung von Foo.class.getResourceAsStream("Test.properties") wird die Datei aus demselben Paket wie Foo geladen, während Foo.class.getResourceAsStream("/com/foo/bar/Test.properties") die Datei aus dem lädt angegebenes Paket.

Das obige ist der detaillierte Inhalt vonWie lade ich Ressourcendateien über die Befehlszeile mit „getClass().getResource()“?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn