Heim >Java >javaLernprogramm >Wie greife ich auf Ressourcen in einer Java-JAR-Datei zu?

Wie greife ich auf Ressourcen in einer Java-JAR-Datei zu?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-20 13:45:10948Durchsuche

How Do I Access Resources Within a Java JAR File?

Zugriff auf Ressourcenpfade in Java-JAR-Dateien

Beim Arbeiten mit Ressourcen, die in einer Java-JAR-Datei gespeichert sind, kann es sein, einen Pfad zur Ressource zu erhalten herausfordernd. Im Gegensatz zu regulären Dateien, die im Dateisystem gespeichert sind, verfügen Ressourcen in einem JAR nicht unbedingt über eine direkt entsprechende Datei.

Der bereitgestellte Codeausschnitt veranschaulicht dieses Problem:

ClassLoader classLoader = getClass().getClassLoader();
File file = new File(classLoader.getResource("config/netclient.p").getFile());

Dieser Code führt zu a FileNotFoundException, da auf die Ressource nicht als physische Datei im Dateisystem zugegriffen werden kann. Die JAR-Datei wurde möglicherweise nicht in einzelne Dateien erweitert und der Klassenlader selbst stellt möglicherweise kein Dateihandle für die Ressource bereit.

Alternative Lösung

Um den Inhalt zu erhalten einer Ressource innerhalb einer JAR-Datei ist ein alternativer Ansatz die Verwendung von classLoader.getResourceAsStream():

ClassLoader classLoader = getClass().getClassLoader();
PrintInputStream(classLoader.getResourceAsStream("config/netclient.p"));

Dieser Code liest und druckt den Inhalt der Ressource direkt aus, ohne dass Zugriff auf einen Dateipfad erforderlich ist. Wenn es unbedingt erforderlich ist, auf die Ressource als Datei zuzugreifen, können Sie den Stream in eine temporäre Datei kopieren:

File tempFile = File.createTempFile("temp", null);
try (
    InputStream inputStream = classLoader.getResourceAsStream("config/netclient.p");
    OutputStream outputStream = new FileOutputStream(tempFile);
) {
    IOUtils.copy(inputStream, outputStream);
}

Das obige ist der detaillierte Inhalt vonWie greife ich auf Ressourcen in einer Java-JAR-Datei zu?. 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