Pfadangabe

SiDeu

Aktives Mitglied
Morgen an alle!
Habe da so ein Problem mit meiner Pfadangabe!
Ich habe folgendes
src da drin package test mit Klasse test
dann habe ich "nicht im src sonderndarunter den Ordner Bilder
wie greife ich nun auf ein bild zu wo im ordner Bilder ist?
test.png
 
Zuletzt bearbeitet:

FetterOtter

Bekanntes Mitglied
Moin Moin,

so müsste es eigentlich klappen:

Java:
ImageIcon icon = new ImageIcon("Bilder/IMG_(1).jpg");
 

SiDeu

Aktives Mitglied
Ne so funktioniert es nicht habe ich natürlich schon probiert auch mit ../Bilder/IMG_(1).jpg
 
Zuletzt bearbeitet:

VfL_Freak

Top Contributor
Moin,

kommt denn irgendeine Fehlermeldung oder wird einfach "nur nicht geladen" ???:L

Mal so ganz in Blaue geschossen: Klammen in Dateinamen :eek:

Gruß
Klaus
 

Breas

Mitglied
Guten Morsche,


versuche mal das hier ( Beispiel )=>
Java:
File file = new File ("C:/./Bilder/");

würde mir so spontan einfallen :)

Hoffe das hilft etwas weiter.

Grüsse Breas
 

SiDeu

Aktives Mitglied
sorry ich finde den Fehler einfach nicht
ImageIcon img = new ImageIcon("./Bilder/IMG_(1).JPG");
so funktioniert es einfach nicht!
 

SiDeu

Aktives Mitglied
Ich finde den Fehler einfach nicht
ImageIcon img = new ImageIcon("./Bilder/IMG_(1).JPG");
so funktioniert es nicht bei mir
 
Zuletzt bearbeitet:

FetterOtter

Bekanntes Mitglied
Woher weißt du denn, dass das Bild nicht geladen wird? Bekommst du es nicht ausgegeben? Vielleicht solltest du mal etwas Code posten...
 

VfL_Freak

Top Contributor
Moin,

wenn ich mir den Screenshot aus dem ersten Post richtig anschaue, hege ich die Vermutung, dass sich möglicherweise zwischen dem Unterstrich und der öffnenden Klammer noch ein Leerzeichen befinden könnte .....

Ich habe meine Pics allerdings immer auch im gleichen Verzeichnis wie die jeweilige Source liegen und greife dann bspw. so drauf zu:
Java:
// gegeben bspw. folgendes  Package
package aaa.bbb.ccc;
// Bilder im Pfad: aaa/bbb/ccc/MyClass

class MyClass
{
// ...
myLabel.setIcon( new ImageIcon( MyClass.class.getResource("myPic.png")) );
Macht es (zumindest mir) einfacher ... gerade auch fürs SVN :)

Gruß
Klaus
 
Zuletzt bearbeitet:

kaoZ

Top Contributor
einfach mal in einen try/catch block legen und stacktrace ausgeben lassen ? oder einfach mal debuggen und schauen mit was er das imageIcon belegt ?
 

karlmasutra

Mitglied
Hallo zusammen. Ich habe auch mal eine Frage bzgl. Pfadangaben. Konkret geht es da um 2 Fälle.

1. Fall - Hintergrundmusik für eine Stage
Pfadangabe ist über einen Absoluten Pfad. Das Problem ist, das auf dieses Projekt noch andere Personen zugreifen und die ja mit meinen absoluten Pfad nix anfangen können. Aber bei einer relativen Pfadangabe wirft er mir immer eine Exception. Was mache ich denn da falsch?

Java:
//absoluter Pfad

    //Media musicFile = new Media("file:/Users/h0ax3s/Documents/workspace/Monopoly/FXMonopoly/GameOfThronesTheme.mp3");

    //relativer Pfad

    Media musicFile = new Media("file:../FXMonopoly/GameOfThronesTheme.mp3");



    MediaPlayer mediaPlayer = new MediaPlayer(musicFile);
Java:
Exception in thread "Thread-4" java.lang.IllegalArgumentException: URI is not hierarchical

    at java.base/java.io.File.<init>(File.java:418)

    at javafx.media/com.sun.media.jfxmedia.locator.ConnectionHolder$FileConnectionHolder.openFile(ConnectionHolder.java:217)

    at javafx.media/com.sun.media.jfxmedia.locator.ConnectionHolder$FileConnectionHolder.<init>(ConnectionHolder.java:176)

    at javafx.media/com.sun.media.jfxmedia.locator.ConnectionHolder.createFileConnectionHolder(ConnectionHolder.java:63)

    at javafx.media/com.sun.media.jfxmedia.locator.Locator.createConnectionHolder(Locator.java:608)

    at javafx.media/com.sun.media.jfxmediaimpl.MetadataParserImpl.run(MetadataParserImpl.java:102)

2. Fall - fxml-Datei aus anderem Package laden
Folgende Packagestruktur ist vorhanden:
  1. monopoly.ansicht.hauptmenue
  2. monopoly.ansicht.regelwerk
Im 1. Package erstelle ich über eine Methode eine neue Scene
Java:
@FXML

    void clickButRegeln(ActionEvent event) throws IOException {

       

        Parent regelwerkParent = FXMLLoader.load(getClass().getResource("/Users/h0ax3s/Documents/workspace/Monopoly/FXMonopoly/src/monopoly/ansicht/regelwerk/Regelwerk.fxml"));

        Scene regelwerkScene = new Scene(regelwerkParent);



        Stage window = (Stage) ( (Node)event.getSource()).getScene().getWindow();

        window.setScene(regelwerkScene);

        window.show();

    }

Die Regelwerk.fxml liegt allerdings in Package Nummer 2.

Hier habe ich aktuell auch einen absoluten Pfad und benötige eigentlich einen relativen, allerdings funktioniert es hier auch nicht mit dem absoluten Pfad.

Java:
Caused by: java.lang.NullPointerException: Location is required.

Könnte mir hier vllt jmd weiterhelfen?

Danke und VG Marco

P.s.: Ich nutze einen Mac, falls das eine Rolle spielt
 

mihe7

Top Contributor
Die Namen ("Pfadangaben") von Class#getResource() bzw. Class#getResourceAsStream bezeichnen Ressourcen, die vom jeweiligen ClassLoader geladen werden. Sie beziehen sich also nicht auf das Dateisystem sondern auf die "Pakete" des Programms. Werden sie ohne führenden '/' angegeben, wird davon ausgegangen, dass sich die Ressource im selben Paket wie die Klasse befindet, für getResource() bzw. getResourceAsStream() aufgerufen wurde.
 

karlmasutra

Mitglied
Die Namen ("Pfadangaben") von Class#getResource() bzw. Class#getResourceAsStream bezeichnen Ressourcen, die vom jeweiligen ClassLoader geladen werden. Sie beziehen sich also nicht auf das Dateisystem sondern auf die "Pakete" des Programms. Werden sie ohne führenden '/' angegeben, wird davon ausgegangen, dass sich die Ressource im selben Paket wie die Klasse befindet, für getResource() bzw. getResourceAsStream() aufgerufen wurde.

Das heißt ich müsste alle betreffenden FXML-Dateien im selben Package liegen haben wie die Ansichtsklasse fürs Hauptmenü? Das macht ja wenig Sinn, bezogen auf die Übersichtlichkeit. Immerhin bauen noch 5 andere Scene auf das Hauptmenü auf. Dann kann ich ja auch gleich alles in ein Package legen und spare mit die Aufteilung.

Oder gibt es noch andere Methoden wie ich eine FXML-Datei zuweisen kann?

VG
Marco
 

mihe7

Top Contributor
Das heißt ich müsste alle betreffenden FXML-Dateien im selben Package liegen haben wie die Ansichtsklasse fürs Hauptmenü?
Nein. Du kannst Ressourcen innerhalb Deines Projekts ablegen, wo Du willst. Wenn Du allerdings keinen "absoluten" Pfad angibst, wird von dem Package ausgegangen., in dem sich die Klasse befindet, deren getResource()-Methode Du aufgerufen hast.

Das macht ja wenig Sinn, bezogen auf die Übersichtlichkeit. Immerhin bauen noch 5 andere Scene auf das Hauptmenü auf.
Erstens kann ich nichts falsches daran erkennen, zusammengehörige Dinge auch zusammen abzulegen. Zweitens kannst Du die Ressourcen theoretisch in anderen Packages ablegen und drittens muss man zwischen Übersetzungs- und Laufzeit unterscheiden. Zur Übersetzungszeit können die Ressourcen theoretisch überall auf dieser Welt liegen, so lange das Buildsystem dafür sorgt, dass es am Ende ins richtige Package kommt.

Bei Maven beispielsweise werden Ressourcen und Quelltext standardmäßig in getrennten Verzeichnisbäumen gespeichert. Dort findet man Quelltexte unter src/main/java und Ressourcen unter src/main/resources. Hast Du also eine Klasse org.javaforum.app.Main und lädt diese Klasse eine Ressource via getClass().getResource("logo.png"), dann würde man den Quelltext unter src/main/java/org/javaforum/app/Main.java ablegen und die Ressource unter src/main/resources/org/javaforum/app/logo.png. Im am Ende gebauten Jar-File findet man beide Dateien im Jar unter org/javaforum/app.

Lädt die Main-Klasse zusätzlich z. B. getClass().getResource("/i18n/bundle.properties"), dann müsste man die Datei bundle.properties unter src/main/resources/i18n/bundle.properties speichern, damit sie gefunden wird.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
A Pfadangabe Datei senden Java Basics - Anfänger-Themen 14
A Datentypen String - Probleme bei Pfadangabe Java Basics - Anfänger-Themen 14
Q Pfadangabe für zu speichernde Bilder Java Basics - Anfänger-Themen 2
L Input/Output FileReader Pfadangabe Java Basics - Anfänger-Themen 7
eLogic JDBC: Relative Pfadangabe in JAR Java Basics - Anfänger-Themen 14
D Pfadangabe unter windows Java Basics - Anfänger-Themen 7
K Richtige Pfadangabe einer Textdatei Java Basics - Anfänger-Themen 7
M Jpg und wav datei pfadangabe bei Runnable Jar file Java Basics - Anfänger-Themen 2
J FileOutputStream richtige Pfadangabe? Java Basics - Anfänger-Themen 8
Piwi Relative Pfadangabe bei Bildern Java Basics - Anfänger-Themen 2
Strahlungsleck [gelöst]File Pfadangabe funktioniert nicht mit Servername/IP Java Basics - Anfänger-Themen 2
D relative Pfadangabe auf überverzeichnis Java Basics - Anfänger-Themen 3
S Relative Pfadangabe funzt nicht Java Basics - Anfänger-Themen 2
A relative Pfadangabe in jars Java Basics - Anfänger-Themen 2
T öffnen einer Datei mit relativer Pfadangabe Java Basics - Anfänger-Themen 8
G Pfadangabe? Java Basics - Anfänger-Themen 2
G Jar archiv Pfadangabe! Java Basics - Anfänger-Themen 5
B Relative/Absolute Pfadangabe. Wie unterscheiden? Java Basics - Anfänger-Themen 4
L Datenbankanbindung ODBC falsche pfadangabe? Java Basics - Anfänger-Themen 3
G zusätzliche "" bei Pfadangabe z.B. bei FileReader Java Basics - Anfänger-Themen 2
F Leerzeichen in Pfadangabe beim Befehl exec() Java Basics - Anfänger-Themen 5
M relative Pfadangabe beim laden von properties Datei Java Basics - Anfänger-Themen 4
G relative Pfadangabe Java Basics - Anfänger-Themen 3
M Laden eines Image mit relativer Pfadangabe Java Basics - Anfänger-Themen 3
E Laufwerksangabe aus Pfadangabe (String) filtern Java Basics - Anfänger-Themen 10
G Problem mit Vector() + Pfadangabe + Linux Java Basics - Anfänger-Themen 8
S JTree valueChanged() Ausgabe leider immer mit Pfadangabe! Java Basics - Anfänger-Themen 4
M Pfadangabe zu ORDNER von Klassenverzeichnis aus? Java Basics - Anfänger-Themen 3
bernd Richtige Pfadangabe für das Kopieren von Dateien Java Basics - Anfänger-Themen 10
V wieder mal "relative Pfadangabe" Java Basics - Anfänger-Themen 4
M Pfadangabe Windows / Linux Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben