2016-04-19 15 views
0

Beim Versuch, die Datei in Eclipse zu laden, lädt die Datei einfach. Wenn ich jedoch das Projekt mit JAR-Splice in eine JAR-Datei packe, scheint die Anwendung ihre Ressourcendateien nicht mehr zu finden.getResource() Datei nicht gefunden?

Here's the error thrown when the application is run

Und hier ist die Methode, die Dateien lädt: dass die Anwendung die Datei auf diesem Weg auf Basis findet nicht klar

public static File loadFile(String path) throws FileNotFoundException 
{ 
    InputStream stream; 

    stream = FileUtil.class.getClassLoader().getResourceAsStream(path); 
    System.out.println("Stream = " + stream); //Debug purposes 


    File file = new File(FileUtil.class.getClassLoader().getResource(path).getFile()); 
    if (!file.exists()) 
    { 
     System.err.println("Path: " + FileUtil.class.getClassLoader().getResource(path).getPath()); //Also debug purposes 
     throw new FileNotFoundException(); 
    } 

    return file; 
} 

Unter Verwendung dieser zwei System.out.printlns es ist, aber Wenn Sie sich das Bild ansehen, befindet sich der Pfad genau dort, wo sich die Datei befindet, nach der er sucht. Ich bin so verwirrt, wie es noch nie zuvor passiert ist, und der Weg, auf dem es sagt, dass es die Datei nicht finden kann, ist genau, wo es ist. Irgendwelche Ideen irgendjemand?

+2

'getResource' sucht nicht nach Dateien. Eine Ressource ist keine Datei. – Savior

+1

Veröffentlichen Sie keinen Link zu einem Bild eines Stack-Trace. Kopieren Sie den gesamten Stack-Trace und fügen Sie ihn in Ihre Frage ein. Er wird um vier Leerzeichen eingerückt, sodass er als Code-formatiert blockiert angezeigt wird. – VGR

+0

Das Bild war mehr oder weniger zu zeigen, dass die Bilder an der gleichen Stelle sind, die der Stack-Trace sagt, es ist nicht in. – Tyler

Antwort

0

Hier ist die Methode, die

Dateien hier ist die Methode, die auch nicht noch Ressourcen als Dateien laden kann. Es ist unmöglich. Ressourcen sind keine Dateien und leben nicht im Dateisystem. Sie müssen es neu entwerfen, um entweder eine URL oder einen InputStream zurückzugeben, und da Sie beides direkt von einer Class oder ClassLoader bekommen können, brauchen Sie die Methode überhaupt nicht.

+0

Sie haben Recht, es ist einfach nicht möglich. Im Moment schreibe ich eine Spielebibliothek in Verbindung mit LWJGL, die hauptsächlich Ressourcen aus JAR-Dateien verwendet. Daher habe ich die Bibliothek so umgestaltet, dass sie InputStreams anstelle von Dateien verwendet. Funktioniert genau gleich und es funktioniert tatsächlich nach dem Kompilieren! – Tyler