wie machen Sie getResourceAsStream arbeiten beim Debuggen von Java in Eclipse?
Dies ist wahnsinnig... ich kann machen getResource() und getResourceAsStream() korrekt funktioniert, wenn ich Java auf meinem verpackt JAR-Datei enthält eine text-Datei. (für Referenz sehen, die Sonne docs auf Zugriff auf Ressourcen) ich kann nicht scheinen, um das gleiche Programm einwandfrei, wenn ich bin, läuft es innerhalb von Eclipse, obwohl ich habe meine text-Datei in den gleichen Baum wie meine kompiliert .die class-Dateien
Kann einer von Euch mir bei allen Feinheiten, um sicherzustellen, dass getResource() und getResourceAsStream () - Funktionen richtig funktionieren?
Habe ich das Gefühl, es hat zu tun mit CLASSPATH und/oder Eclipse bringt .class-Dateien, die es autocompiles. (Ich habe bemerkt, wenn ich Ant, es kompiliert alle Java-Dateien, die sich geändert haben, seit meinem letzten Ant-build, obwohl Eclipse kompiliert diese Java-Dateien schon.)
- finden Sie eugener die Antwort von stackoverflow.com/questions/5490547/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie Ihren text-Datei, die zusammen mit Ihrem Quellcode-Dateien, Eclipse kopieren Sie es auf, wo immer Sie stellen Ihre kompiliert .die class-Dateien, und so sehen Sie Ihre text-Datei beim ausführen der app von Eclipse (und die Sie Bearbeiten können, um die Datei in Eclipse auch).
Ein paar Hinweise:
Erste -- wie Chocos sagt, legen Sie es in den eclipse-source-dirs, nicht die binären dirs. Eclipse wird klar, dass die binäre dirs, wenn Sie "sauber" ist, sowie Aufräumen unübertroffene Dateien. Es kopiert nicht-java-source-Dateien zu der binären dir.
Dies bedeutet, dass selbst wenn Sie drop die Datei in das binäre dir, es kann gelöscht werden, indem eclipse...
Beachten Sie, dass getResourceAsStream und getResource betreiben relativ zum package der code, der Sie aufruft. Zum Beispiel:
Diese tatsächlich Aussehen für a/b/c/fee.txt; das Paket vorangestellt wird. Dies funktioniert gut, wenn man die fee.txt in der gleichen Quelle, von dir als Foo.java Datei, oder wenn Sie einen separaten Satz von Ressource-Verzeichnisse im classpath mit der gleichen Verzeichnisstruktur.
Wenn Sie
es Aussehen wird fee.txt direkt auf den Klassenpfad.
Wenn Sie von der Befehl-Linie, wo in der JAR ist die Ressource-Datei?
-- Scott
Das problem gefunden!
Ich hat habe meine Bild-Dateien in den source-tree. (in meinem Ant-build kopiere ich Sie auf die build-dir)
Das problem war, dass ich es nicht getan hätte, einen letzten aktualisieren des Quellcodes in Eclipse. Also die Dateien waren da, aber Eclipse nicht zahlen keine Aufmerksamkeit auf Sie.
Danke für clueing mich in der Tatsache, dass Eclipse sollte Sie in meinem source-tree.
In der Run Configuration für Sie sind jedoch beim starten der Anwendung, gehen Sie auf die Classpath-Registerkarte und fügen Sie den root-Ordner der Pfad, den Sie verwenden, um auf die Datei zuzugreifen.
So zum Beispiel, wenn Sie versuchen zu laden "blah/file.txt" und die Datei befindet sich im "folder/blah/file.txt" fügen Sie "Ordner", um den classpath. Wenn Sie versuchen, laden Sie die Ressource nur mit "file.txt", dann fügen Sie "Ordner/bla".
Ich hatte das gleiche problem mit IntelliJ, die Lösung dafür war, In den Projekt-Einstellungen, fügen Sie den Ordner mit der resource files, in meinem Fall sound-Dateien als Quelle. Hinzufügen ?*.wav (oder Ihr pref filetype) im Einstellungen->Compiler Resource patterns.
Was genau meinst du mit "richtig funktionieren"? Was ist der Fehler/das Verhalten?
Schlage ich vor, mit
getResource
finden Sie die URL eines Ihrer.class
Dateien (oder ungefähr gleichwertiggetClass().getProtectionDomain().getCodeSource()
. Sie können feststellen, dass es darauf irgendwo unerwartet.