2016-12-21 2 views
-1

Ich mache eine Anwendung in Eclipse. Wenn ich es in Eclipse starte, funktioniert es.
Dies ist der Pfad zu den Bildern: C: \ Users \ example \ Arbeitsplatz \ Beispiel \ src \ images
Dies ist mein Code:Bilder in Eclipse bekommen, aber nicht in .jar

public String name; 
public Rectangle example; 
public Image exampleImage; 

public Example(String name) { 
    this.name = name; 
    exampleImage = new Image("./images/example.png"); 
    example = new Rectangle(exampleImage.getWidth(), exampleImage.getHeight()); 
    example.setFill(new ImagePattern(exampleImage));  
} 

ich das Bild von diesem Code in einer anderen Datei zugreifen.

public Example example; 
public void buildExample(){ 
    example = new Example("example"); 
    borderPane.getChildren().add(example.getImage()); 
} 

die .java Alle in src
Alle Bilder sind in Bilder
in Eclipse diese Verzeichnisse Arbeit:
"./images/example.png"
„file: ./ src/images /example.png“
Wenn es eine .jar-Datei machen, ist der Pfad Example.jar \ images \
alle .class-Dateien in Example.jar
Alle Bilder sind in Bilder
Wenn ir un die .jar, bekomme ich diesen Fehler:
Ausnahme im Thread "JavaFX Application Thread" java.lang.IllegalArgumentException: Bild muss nicht null sein
warum funktioniert es in Eclipse und nicht in einem .jar?

+0

Sie den eigentlichen Code zeigen Können Sie zu laden versuchen, das Bild mit, anstatt nur die Wege? –

+0

Bitte fügen Sie der Frage die Ausgabe von 'jar tvf Example.jar' hinzu. – jewelsea

+0

Was meinst du mit Ausgabe? –

Antwort

0

Dies ist, weil Eclipse nur Ihren Code kompiliert, sie hängen die Bilder nicht an die .jar an. Wenn Sie möchten, dass dies mit einer .jar-Datei funktioniert, erstellen Sie diese Verzeichnisse in dem Ordner, in dem sich Ihre .jar-Datei befindet: "src/images /" und platzieren Sie dann das Bild "example.png" in diesem Verzeichnis. Führen Sie Ihr .jar aus, und es sollte in die Bilder geladen werden.

+0

Wenn ich das .jar mache, schaue ich es mit einer .zip an.Das Bild war dort –

+0

'.' oder' ..' als Teil eines Pfades funktionieren nicht in einem Jar afaik ... – fabian

0

EDIT: Ihr posted Code wird nicht einmal kompilieren! Folgen Sie diesem Link für ein Tutorial, wie man ein Bild zu lesen: https://docs.oracle.com/javase/tutorial/2d/images/loadimage.html

Dies wird durch zwei Dinge verursacht werden können:

  1. Die Dateien nicht in die jar-Datei exportiert werden. Sie können dies beheben, indem Sie in den Projekteigenschaften-> Java-Buildpfad-> Quelle gehen und prüfen, ob Sie alle Dateien einschließen und keine bestimmten ausschließen.
  2. Die zweite Möglichkeit ist ein falscher Pfad. Irgendwie werden im Eclipse-Pfad die Wege anders gelöst. Eine Lösung hierfür ist, den Pfad über eine a-Klasse zu definieren. Angenommen, Sie haben die folgende Ordnerstruktur:
    Folder structure
    Dann Sie das Bild sicher zugreifen können, wenn Sie dies als Pfad verwenden:

    Prog.class.getResource („img/foo.jpg“);

+0

In Java Build Path heißt: Included (All), Excluded (None) unter Beispiel/src –

+0

dann sollten Sie für die zweite Lösung gehen. Platzieren Sie eine Klasse im gleichen Ordner oder in einem anderen Ordner oben und greifen Sie dann wie oben beschrieben auf diese Klasse als Startpunkt zu. –

+0

btw. Normalerweise lädst du ein Bild nicht so. Sie können ein Bild zum Beispiel laden, indem Sie javax.imageio.ImageIO verwenden. Überprüfen Sie diesen Link für Details: –

1

Um eine Datei aus einem Gefäß zu öffnen, verwenden Sie diese Methode:

URL url = this.getClass().getClassLoader().getResource(filePath); 

und geben url.toString() als Konstruktor Argument der Image Klasse

+1

Besser verwenden Sie 'url.toExternalForm() 'anstelle von' url.toString() ' – fabian

Verwandte Themen