getResourceAsStream gibt bei Pfadangabe nichts zurück (nur in compiliertem Jar)

canaille

Grünschnabel
Hey zusammen,

habe ein kleines Problem beim beziehen von Files aus einem Package.
Der untenstehende Code funktioniert in Netbeans, sobald ich ein Jar daraus baue kommt nichtsmehr zurück ...
Woran liegt das und wie kann ich das beheben?

Danke!

Code:
    public static String[] getRessources(String pack) {
        String content = "";
        pack = correctRessourcesPath(pack);
        try {
            Class resourceClass = Client.class;
            InputStream fileStream = resourceClass.getResourceAsStream(pack);
            for (int c = fileStream.read(); c != -1; c = fileStream.read()) {
                content += (char) c;
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        String[] ressources = content.split("\\n");
        for (int i = 0; i < ressources.length; i++) {
            ressources[i] = pack + ressources[i];
        }
        return ressources;
    }

    private static String correctRessourcesPath(String path) {
        path = path.replace(".", "/");
        if (!path.startsWith("/")) {
            path = "/" + path;
        }
        if (!path.endsWith("/")) {
            path += "/";
        }
        return path;
    }
 
Howdie.

Das liegt bestimmt an deinen Pfad-Korrekturen. Ich verwende fast in jedem Projekt den folgenden Code, der auch im Jar funktioniert:
Java:
InputStream input = ClassLoader.getSystemResourceAsStream(internalPath);
			  	
final byte[] buffer = new byte[1024];
int read;
		        
while((read = input.read(buffer)) != -1){
    // Do something...
 }
 input.close();
Was genau machst du da eigentlich? Mir fehlt grad die Zeit, deinen Code nachzuvollziehen.
Vielleicht überschreibst du aus Versehen das "!" Zeichen. Eine über den ClassLoader geladene Datei innerhalb eines Jars hat ein Ausrufezeichen vor dem Jar-Namen.
Beispiel:
"C:\Windows\!MeinJar\files\pic.jpg" (Ohne Garantie auf Richtigkeit, vielleicht fehlt ".jar" oder sowas)

Gruß
miffi
 
ich ersetze alle punkte durch slashes
und füge, falls nicht vorhanden am amfang und am ende nen slash hinzu

zum code: bei dateien klappt der code problemlos
wenn ich aber packages (die darin enthaltenen dateinamen) auslesen will, kommt nichts zurueck!
 
Zurück