• Wir präsentieren Dir heute ein Stellenangebot für einen Java Entwickler - m/w/d in Augsburg, München, Stuttgart oder Bamberg. Hier geht es zur Jobanzeige

Eclipse Runnable jar exportiert keine Textures?

Tobero

Tobero

Mitglied
2021-03-01 15_17_22-Workspace - Planets_src_Planets_tile_Tile.java - Eclipse IDE.png

Ich möchte gerne Projekt exportieren, aber als ich es probiert habe es zu öffnen, stand da, das es die Textures nicht findet. Mach ich etwas falsch? Muss ich da etwas anders machen als wie einfach nur export as runnable drücken? Ich benutze übrigens Eclipse
 
kneitzel

kneitzel

Top Contributor
Frage: Wie lädst du die Daten aus dem res Ordner? Ich vermute direkt über das Filesystem -> Dies musst du über das Laden von Resourcen machen (also getRessource / getRessourceAsStream von Class oder Classloader.)

Generell müssen die Dateien in einem Pfad sein, der für Eclipse einen Source Ordner darstellt. Dazu entweder den Ordner mit den Dateien in src verschieben oder den Ort als Source Ordner hinzu fügen.

Dann werden die Dateien auch in das jar File kopiert aus dem Du es dann laden kannst (So Du es übe den Classloader lädst).
 
Tobero

Tobero

Mitglied
Ich habe den res folder als Bibliothek hinzugefügt und lade die dann über res/textures
Mein Dateien Lade Klasse:
public class ImageLoader {

    public static BufferedImage loadImage(String path) {
        try {
            System.out.println(path);
            return ImageIO.read(ImageLoader.class.getResource(path));
        } catch (IOException e) {
            e.printStackTrace();
            System.out.println("Didn't find: " + path);
            System.exit(1);
            return null;
        }
    }
    
}
 
kneitzel

kneitzel

Top Contributor
Ok, das Gute ist dann wohl, dass Du das laden schon korrekt machst über getRessource/getRessourceAsStream.

Aber Bibliothek einbinden besagt ja nur, dass dies eine Abhängigkeit ist, die er mit betrachten soll. Dadurch wird da nichts gebaut und auch nichts in JAR File kopiert (ggf. wenn Du ein sogenanntnes fat Jar baust vielleicht, weil dann alle Abhängigkeiten mit kopiert werden ...)

Aber das ist es doch nicht unbedingt. Es ist mehr ein Bestandteil deiner Applikation, daher sollte das innerhalb eines Source Ordners sein. Also wie gesagt: entweder direkt in src verschieben oder den Ordner als Source Ordner hinzufügen (Aber wenn Du den Ordner res als Source Ordner hinzufügst, dann geht das aus dem classpath verloren und statt /res/... ist es nur noch /....)
 
Tobero

Tobero

Mitglied
Ich habe jetzt den res Ordner in den Source gegeben und aus den Bibliothek gelöscht. Ich habe auch das res/textures zu /textures geändert, doch wenn ich es exportiere, dann wird es immer noch nicht gefunden. Wenn ich es über eclipse mache, dann geht aber alles
 
mrBrown

mrBrown

Super-Moderator
Mitarbeiter
Wie sieht denn der Inhalt der Jar-Datei aus? Sind die Dateien dort enthalten, und wenn ja, unter welchem Pfad?
 
Tobero

Tobero

Mitglied
Ich weiß nicht ganz, was du unter Inhalt meinst. Eigentlich will ich ja, das ich damit mein Programm aufrufen kann. Und ich habe alles in dieser Datei.
 
F

fhoffmann

Top Contributor
Ich weiß nicht ganz, was du unter Inhalt meinst.
Eine .jar-Datei ist nichts anderes als eine .zip-Datei.
Du kannst die .jar-Datei kopieren (sicherheitshalber), sie (möglicherweise) von .jar in .zip umbenennen und sie dann entpacken.
Dann kannst du dir den Inhalt der Datei ansehen (und insbesondere gucken, ob und wo deine Textures liegen).
 
Zuletzt bearbeitet:
Tobero

Tobero

Mitglied
2021-03-03 19_01_24-e.zip.png
Meine textures sind gleich zu sehen wenn ich es entpackt habe, aber ich kann jetzt nichts daraus deuten
 
kneitzel

kneitzel

Top Contributor
Wenn die so direkt im jar File sind, dann solltest Du diese mittels getResource oder getResourceAsStream laden können. Dabei ist die Gross-/Kleinschreibung zu beachten und es darf kein führendes /res geben. Also etwas wie:
getClass().getResourceAsStream("/textures/MyTexture.png")
 
Tobero

Tobero

Mitglied
Ich erhalte damit ein Bild, wenn ich es manuell mache, aber ich habe das ganze mit einem lade system gemacht. Ich denke, das es nicht funktioniert weil es keine Files bekommt?
Assets Klasse:
private static void showFiles(String path, String directory) throws IOException {
        //In diesem Fall ist es: path = "/textures"; directory = "textures"
        File[] files = new File(path).listFiles();
        if (files == null) {
            return;
        }
        
        for (File file : files) {
            if (file.isDirectory()) {
                showFiles(path + "/" + file.getName(), directory + "/" + file.getName());
            } else {
                textureAtlas.put(file.getName(), ImageLoader.loadImage("/" + directory + "/" + file.getName()));
            }
        }
 
kneitzel

kneitzel

Top Contributor
Ja, das musst du dann so ändern, dass es über den Classloader läuft und nicht mehr über File.

Und bezüglich auflisten der Ressourcen in einem gegebenen Classpath wäre dann ggf. folgender Link interessant:
 
Tobero

Tobero

Mitglied
Jetzt habe ich das problem, das die Ordner nicht mehr als Ordner erkannt werden. Es läd alle Datei die in dem ersten Ornder, aber geht dann nicht weiter
Code:
List<String> files = ImageLoader.getResourceFiles(path);
        
        if (files == null) {
            return;
        }
        
        for (String nameOfFile : files) {
            File file = new File(path +"/"+ nameOfFile);
            if (file.isDirectory()) {
                showFiles(path + "/" + nameOfFile, directory + "/" + nameOfFile);
                System.out.println(path + "/" + nameOfFile);
ImageLoader:
public static List<String> getResourceFiles(String path) throws IOException {
        List<String> filenames = new ArrayList<>();

        try (
                InputStream in = getResourceAsStream(path);
                BufferedReader br = new BufferedReader(new InputStreamReader(in))) {
            String resource;

            while ((resource = br.readLine()) != null) {
                filenames.add(resource);
            }
        }

        return filenames;
    }

    private static InputStream getResourceAsStream(String resource) {
        final InputStream in
                = getContextClassLoader().getResourceAsStream(resource);

        return in == null ? ImageLoader.class.getResourceAsStream(resource) : in;
    }

    private static ClassLoader getContextClassLoader() {
        return Thread.currentThread().getContextClassLoader();
    }
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
L Eclipse Runnable Jar mit Dateien Allgemeine Java-Themen 8
S runnable jar file in Verbindung mit itext Allgemeine Java-Themen 3
M Image für PDF nicht verfügbar - Runnable .jar Allgemeine Java-Themen 3
J Runnable jar-File: Fehlermeldung Allgemeine Java-Themen 2
Wirago (runnable) JAR-File ausführen Allgemeine Java-Themen 6
A runnable jar läuft mur auf einem pc1 und nicht auf pc2 Allgemeine Java-Themen 6
K Auf Methoden der Runnable Klasse zugreifen Allgemeine Java-Themen 2
D Wozu runnable implementieren? Allgemeine Java-Themen 3
C Runnable Jars Allgemeine Java-Themen 2
J Threads und Runnable Allgemeine Java-Themen 2
K Runnable Jar mit Doppelklick ausführen Allgemeine Java-Themen 10
P Runnable Jar File über Windows ausführbar doch über Linux nicht Allgemeine Java-Themen 8
C Kann Methode nicht aus Klassenname implements Runnable nutzen Allgemeine Java-Themen 7
H Kann ein Runnable Objekt auf das Thread Objekt zugreifen? Allgemeine Java-Themen 4
DamienX Erweitern von Runnable Allgemeine Java-Themen 3
R in einem neuen Runnable() eine lokale Varibale verwenden Allgemeine Java-Themen 2
V Aufruf von Klasse mit Runnable versteh ich nicht Allgemeine Java-Themen 8
N an die Klasse eines Runnable Threads kommen? Allgemeine Java-Themen 9
pkm javax.script.ScriptEngineManager gibt mir keine Engine Allgemeine Java-Themen 4
N iText keine Sonderzeichen und Umlaute unter Windows Allgemeine Java-Themen 13
S createTempFile erstellt keine temporäre Datei Allgemeine Java-Themen 13
O xlsx Datei auslesen mit POI Apache liest keine LEERZELLEN Allgemeine Java-Themen 6
C javax.mail.Message message.setreplyto() null setzen (keine replyto Adresse) Allgemeine Java-Themen 25
Thallius Keine Ahnung Allgemeine Java-Themen 15
M WSDL: Doppelte Typenames (Keine Verwendung möglich) Allgemeine Java-Themen 5
L JPA keine shared primary key Allgemeine Java-Themen 11
M Keine weitere Eingabe in der Main möglich. Eventueller Ansatz über while. Allgemeine Java-Themen 8
P Datenbank-MiniGUI fügt keine Daten ein Allgemeine Java-Themen 4
T Input/Output Konsole gibt trotz printf keine Umlaute aus Allgemeine Java-Themen 17
N Warum habe ich keine Spaltenüberschriften? Allgemeine Java-Themen 6
W Thread sleep 30 sekunden - wenn keine Antwort bis dahin neu senden Allgemeine Java-Themen 2
Thallius Bekomme keine Exception mit Stacktrace mehr. Was habe ich getan? Allgemeine Java-Themen 13
H jid3lib nach schreiben keine Tags im Folder angezeigt Allgemeine Java-Themen 1
0 Code startet nicht (Keine Warnung/Fehlermeldung) Allgemeine Java-Themen 4
A Swing FileWriter schreibt keine Daten in Datei Allgemeine Java-Themen 13
J Programm meldet "Keine Rückmeldung" nach Verbindung zum Server Allgemeine Java-Themen 4
Z Eclipse hängt sich alle paar Sekunden auf (Keine Rückmeldung). Allgemeine Java-Themen 4
Bluedaishi Input/Output Bluetooth Bondrucker MZ220 keine Verbindung Allgemeine Java-Themen 0
F Cardlayout prüfen ob schon vorhanden, keine doppelten Allgemeine Java-Themen 3
R Es gibt keine dummen Fragen (hab ich mal gehört) Allgemeine Java-Themen 11
M Eclipse Keine Ausgabe mehr bei Fehlern Allgemeine Java-Themen 3
S Java Applet Crash - Keine Exception Allgemeine Java-Themen 8
V Files mit Umlauten ergeben keine Größe Allgemeine Java-Themen 9
S Bekomme mit Scanner und URL keine Html-Seite ausgelesen Allgemeine Java-Themen 3
127.0.0.1 Subversion neues SVN Projekt, keine Main gefunden ?! Allgemeine Java-Themen 7
A Collections HashMap.containsKey findet keine immutablen Objekte Allgemeine Java-Themen 3
M keine Bilder in .jar-Datei (java) Allgemeine Java-Themen 23
D Chat - keine Schrift sichtbar Allgemeine Java-Themen 4
J Eclipse Elipse gibt mir keine Vorschläge mehr :( Allgemeine Java-Themen 6
S Objekte die Objekte enthalten: Keine Vererbung Allgemeine Java-Themen 4
S Tomcat java.util.logging - keine Logs Allgemeine Java-Themen 12
Guybrush Threepwood Warten, bis keine Taste gedrückt Allgemeine Java-Themen 11
S Keine NullPointerExceptions in nebenläufigen Threads Allgemeine Java-Themen 21
T Batch-File / keine Verbindung zur DerbyDB Allgemeine Java-Themen 3
O Zugriff auf Serielle Schnittstelle - Keine Ports gefunden. Allgemeine Java-Themen 8
X Warum kann ich keine ZIP Datein mit renameto() in was anderes benennen? Allgemeine Java-Themen 13
B warum keine nested blocks Allgemeine Java-Themen 2
GilbertGrape Jetty-Dienst startet keine Programme mit Oberfläche Allgemeine Java-Themen 2
S Keine Exception-Warning in Eclipse Allgemeine Java-Themen 3
D Warum keine Mehrfachvererbung? Allgemeine Java-Themen 5
tfa Keine Closures in Java 7 (?) Allgemeine Java-Themen 17
J Probleme wenn man keine serialVersionUID definiert? Allgemeine Java-Themen 27
G PrintWriter in .jar erstellt keine Datei Allgemeine Java-Themen 4
F Kann man keine Arrays von generischen Typen erstellen? Allgemeine Java-Themen 2
G Javadoc generiert keine Links zu java.lang Klassen? Allgemeine Java-Themen 4
A ArrayListe :Doppelte entfernen -> keine Referenzen Allgemeine Java-Themen 26
ARadauer Random keine Zahlen doppelt Allgemeine Java-Themen 4
T Wieso erfolgt keine Ausgabe. /Excel Allgemeine Java-Themen 19
F GregorianCalendar wirft keine Fehler bei z.b. Monat 17 Allgemeine Java-Themen 3
G Jarfile gibt keine Textnachrichten aus Allgemeine Java-Themen 2
J java vnc client verbessern: KeyEvent.VK_ALT keine Wirkung? Allgemeine Java-Themen 12
J jar-Datei enthält keine Main-Class Allgemeine Java-Themen 22
N Keine Klassen startbar/mit Abhängigkeiten erstellbar Allgemeine Java-Themen 2
WMaerz Der neue JDK 6 enthält keine javac.exe, tool.jar usw. Allgemeine Java-Themen 6
P Webhosting-Paket unterstützt nur .war Dateien keine jsp Allgemeine Java-Themen 4
A Kann keine neue Klasse erstellen. Allgemeine Java-Themen 3
D TextPane nach Laden keine Styles Allgemeine Java-Themen 2
A JSP include - keine Fehlermeldung Allgemeine Java-Themen 2
H Vektoren nehmen keine neuen Werte an Allgemeine Java-Themen 5
N Applet übernimmt keine Änderungen Allgemeine Java-Themen 13
C Vier Stellen Keine Doppelt (Zufall) Allgemeine Java-Themen 20
N Euklidischer Algorithmus in Java und keine Terminierung. Allgemeine Java-Themen 7
C Java zeigt keine Fensterinhalte Allgemeine Java-Themen 3
G Leere Fenster (Keine Schrift, Reiter/ Buttons) bei Java Allgemeine Java-Themen 5
G woher installiertes JDK? (keine Adminrechte) Allgemeine Java-Themen 3
R keine sqrt methode für bigintegers? Allgemeine Java-Themen 14
D NullPointerException wo keine sein sollte. Allgemeine Java-Themen 2
0 Keine clone-Methode für BigDecimal und BigInteger? Allgemeine Java-Themen 3
C Sound: Keine Line gefunden. Zu großer internal buffer? Allgemeine Java-Themen 3
Y Comm-API findet keine Ports Allgemeine Java-Themen 5
B Keine Musik bei Applikation Allgemeine Java-Themen 9
H Kann keine Zahlen von Buchstaben unterscheiden Allgemeine Java-Themen 4
V Javadoc ertellt keine korrekten links Allgemeine Java-Themen 3

Ähnliche Java Themen

Anzeige

Neue Themen


Oben