Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Luca

Treue Seele

  • »Luca« ist der Autor dieses Themas

Beiträge: 188

Wohnort: Braunschweig

  • Private Nachricht senden

1

03.06.2013, 19:48

Eclipse findet den angegebenen Pfad nicht

Hallo zusammen
Ich arbeite zurzeit an einem kleinen 2D Spiel und wollte nun Karten in .txt. Format vom Compiler einlesen und in Grafiken umwandeln lassen. Dafür benutze ich den BufferReader. Das Problem liegt auch nicht bei der Programmierung, sondern daran, dass Java meine Textdatei nicht findet, obwohl ich den selben Pfad schon bei anderen Dateien angegeben habe! Hier ein Screenshot. Rechts seht ihr andere Dateien, welche ebenfalls im res Ordner liegen und erkannt werden. Links ist die Textdatei mit dem Namen testmap.txt ebenfalls im res Ordner zu sehen. In der Mitte schließlich mein angegebener Pfad der (weshalb auch immer nicht erkannt wird)

http://www.bilder-hochladen.net/files/k4ds-2-c81e-jpg.html

Es wäre nett, wenn ihr mir helfen könntet. Danke :)

PS: Es sieht vielleicht so aus, als läge die Textdatei in dem sheets Ordner. Sieht aber auch nur so aus!

wluc-16

Treue Seele

Beiträge: 212

Wohnort: in der Nähe von Bielefeld :D

Beruf: Schüler

  • Private Nachricht senden

2

03.06.2013, 20:24

Also die Datei muss im gleichen Ordner, wie deine Quelldateien sein. Falls das nicht der Fall ist, musst du dahin navigieren.
Als Beispiel:

Ordnerstruktur:

Ordner: source
Quelldateien

Ordner: res
Textdateien, ..., etc

Dann wäre die Angabe: "/../res".
Du navigierst also einen Ordner zurück, und dann in den "res"- Ordner.

Hoffe ich konnte helfen :thumbsup:

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »wluc-16« (03.06.2013, 20:31)


xardias

Community-Fossil

Beiträge: 2 731

Wohnort: Santa Clara, CA

Beruf: Software Engineer

  • Private Nachricht senden

3

03.06.2013, 20:25

Benutzt du GetResource oder GetResourceAsStream?

http://docs.oracle.com/javase/1.5.0/docs…ava.lang.String)

Wenn nicht, dann solltest du das tun.

Luca

Treue Seele

  • »Luca« ist der Autor dieses Themas

Beiträge: 188

Wohnort: Braunschweig

  • Private Nachricht senden

4

03.06.2013, 21:10

Ich habe mir den Pfad bereits anzeigen lassen. Doch wie gesagt, folgendes funktioniert:

Quellcode

1
BufferedImage image = ImageIO.read(SpriteSheet.class.getResource("/spritesheet.png"));


folgendes jedoch nicht:

Quellcode

1
BufferedReader level = new BufferedReader(new FileReader("testmap.txt"));


Ich habe natürlich bevor ich irgendwas hier gepostet habe mehrmals überprüft ob es an einem Tippfehler lag. Aber wie man an dem obigen Screenshot sehen kann, funktioniert es dennoch nicht.

Luca

Treue Seele

  • »Luca« ist der Autor dieses Themas

Beiträge: 188

Wohnort: Braunschweig

  • Private Nachricht senden

5

03.06.2013, 21:19

@Xardias: Ich habe es schon so probiert:

Quellcode

1
BufferedReader level = new BufferedReader(new FileReader(Level.class.getResourceAsStream(path)));


Das funktioniert aber auch nicht. Dann erkennt er den Parameter gar nicht.

peacerokkaz

Frischling

Beiträge: 13

Wohnort: Twistringen

Beruf: Student für Informatik

  • Private Nachricht senden

6

03.06.2013, 22:10

Der Parameter von SpawnLevel beginnt mit einem Slash. Das heißt eigentlich, dass die Laufzeitumgebung den Pfad nicht relativ, sondern absolut sucht, wenn du das an den FileReader so übergibst. Bei class.getResource wird nur der Pfad relativ zum Paket der Klasse oder bei führendem Slash absolut im Projekt (!) gesucht (siehe hier), weshalb das problemlos funktioniert. Ein führendes Slash bei Pfäden heißt im Prinzip Wurzelverzeichnis, sodass der FileReader nach \testmap.txt sucht und nicht nach C:\PfadZumProjekt\res\testmap.txt, was es natürlich nicht gibt. Also entweder gibst du den absoluten Pfad an (sinnfrei, weil es sonst immer nur im gleichen Verzeichnis funktioniert), oder den relativen Pfad

Dann wäre die Angabe: "/../res".
Du navigierst also einen Ordner zurück, und dann in den "res"- Ordner.

oder du nutzt auch hier getResource bzw getResourceAsStream etwa so:

Quellcode

1
BufferedReader level = new BufferedReader(new InputStreamReader(Level.class.getResourceAsStream(path)));


Wenn mich nicht alles täuscht, sollte das funktionieren. Ein führendes Slash heißt wie gesagt immer Wurzelverzeichnis (Root). Wenn du relative Pfadangaben verwenden möchtest, aber nicht einfach nur die Datei angeben möchtest, kannst du auch ./file schreiben.

7

23.08.2013, 11:54

Habe das selbe Problem. Mein Ansatz ist:

public class SpriteSheet {

private String path;
public final int SIZE;
public int[] pixels;

public static SpriteSheet tiles = new SpriteSheet ("/texture/spritesheets.png", 256);

public SpriteSheet(String path, int size) {
this.path = path;
SIZE = size;
pixels = new int [SIZE * SIZE];
load();
}

Werbeanzeige