Input/Output Liste der Dateien in einem Ordner in einer Jar Datei erhalten

Arn

Mitglied
Guten Tag,

Ich habe ein problem. Undzwar brauche ich für eine Methode meines Programmes eine Liste von Dateien, die sich in einem Ordner befinden. das Ganze funktioniert normal auch sehr gut mit der folgenden Methode:


Java:
public static String[] getList(String path)
    {
       String[] list=null;
       
       try{
       File folder = new File(path+"/");
       File[] listOfFiles = folder.listFiles();
       list=new String[listOfFiles.length];
       for(int i=0;i<listOfFiles.length;i++)
       {
        list[i]=listOfFiles[i].toString();
       }
       } 
       catch (Exception e)
       {
       }
       
       return list;
    }

Ich bekomme allerdings Probleme wenn ich das Programm aus einer Jar-Datei heraus ausführe, es läuft dann nur bis zu einem bestimmten Punkt und hängt sich dann auf und ich habe diese Methode dort ganz stark als Urheber dieser Probleme im verdacht, da ich mit einigen Methoden zum laden von zeug in Jar Dateien schon früher Probleme gehabt habe. Ich habe das Problem gegoogelt, jedoch keine zufriedenstellende Antwort bekommen. deswegen wollt ich mal fragen ob mir hier vielleicht jemand helfen kann.

Vielen Dank
 

Flown

Administrator
Mitarbeiter
Ich hätt jetzt mal gesagt du fängst die Exception ab und siehst mal ob ein Fehler passiert. Logger oder Konsolenausgaben sind wichtig!
 

Arn

Mitglied
Danke für den Hinweis, ich bekomme wenn ich die gepackte version des Programms öffne leider keine Exception. Weder in der Konsole noch in der Bash, allerdings verhält sich das Programm trotzdem nicht so wie es soll. Es friert irgendwo während des Ladevorgangs ein. in meinem Catchblock stehen die Methoden

Java:
e.printStackTrace();
System.out.println(e.getMessage());
 

Gucky

Top Contributor
Versuch mal die ZipStreams. Da ein Jar Zip komprimiert ist, kann File damit womöglich nicht umgehen.

PS: Was ist ein Bash?
 
Zuletzt bearbeitet:

Arn

Mitglied
Ganz normal mit nem Doppelklick (also außerhalb von irgendeiner Entwickungsumgebung. ich hab die einfach bei mir aufm Desktop)
 

Flown

Administrator
Mitarbeiter
Wenn du es mit der Konsole startest, bekommst du vielleicht auch die Konsolenausgaben mit!

Code:
java -jar <jar-file>.jar
 

Arn

Mitglied
Vielen dank für den Tipp. :oops:

Hier ist die Ausgabe:

java.lang.NullPointerException
at recourceLoader.getList(recourceLoader.java:29)
at levelGenerator.getDefiniteveTexture(levelGenerator.java:94)
at levelGenerator.placeFractal(levelGenerator.java:33)
at levelGenerator.generateLevel(levelGenerator.java:18)
at Engine.generateStage(Engine.java:133)
at Engine.doVoid(Engine.java:43)
at Engine.<init>(Engine.java:35)
at Start.main(Start.java:4)
null

In der API steht, dass das passieren kann, wenn man einen nicht existierenden Pfad angibt. Den Ordner gibt es allerdings und wenn alles ungepackt ist funktioniert das alles auch wunderbar. Gibt es einen anderen weg die Dateien in dem Verzeichnis auf zu listen ? Ich schau mal in der API.
 

Gucky

Top Contributor
Hättest du dir meinen Beitrag durchgelesen, wüsstest du eine ausprobierenswerte Möglichkeit. Nämlich die ZipStreams oder genauer den ZipInputStream.
 

Arn

Mitglied
@Gucky Sorry, hab ich überlesen! D:
Danke für deine Anteilnahme.

Ich hab nun mal nen bisschen an meiner Methode gebastelt und am Ende kam das hier dabei heraus. Was ich zum Verständnis sagen sollte ist, dass das besondere Problem hierbei darin liegt, dass die Klasse (recourceLoader) von der aus ich die Liste erstellen will sich in der gleichen Jar Datei befindet, wie das Verzeichnis, von dessen Inhalt ich eine Liste erstellen möchte. Ich hab probiert einen ZipInputStream zu instanziieren, indem ich ihm wie im Konstruktor in der API beschrieben einen Anderen Inputstream (in dem falle einen FileInputStream der im Konstruktor den Pfad übergeben bekommt) übergebe. Hier das neue Problem. Ich bekomme den FileInputStream nicht instanziiert.
Ich hab ihm zuerst im Konstruktor den relativen Pfad, also "levelSrc/defaultShemes" gegeben, was in wilder Exception-schmeißerei resultierte.
Ich dachte mir also, dass es vielleicht daran liegt, dass der FileInputStream nicht weiß, das sich dass alles in einer Jar-Datei abspielt. Also habe ich mir erstmal via Classloader und URL den absoluten Pfad der zu meiner Klasse führt besorgt und diesen dann ergänzt. Sieht dann so aus:
"file:/Users/Arn/Desktop/meineJar.jar!/levelSrc/defaultShemes"
oder wie in der aktuellen Version:
" /Users/Arn/Desktop/meineJar.jar!/levelSrc/defaultShemes"
Das Resultat ist jedes mal das gleiche:

java.io.FileNotFoundException: /Users/Arn/Desktop/lol.jar!/levelSrc/defaultShemes (No such file or directory)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:138)
at java.io.FileInputStream.<init>(FileInputStream.java:97)
at recourceLoader.getList(recourceLoader.java:48)

das Gleiche Resultat bekomme ich auch, wenn ich eine spezielle Datei in
meine Verzeichnis ansteure.
Mein aktueller Code sieht so aus:

Java:
  try{
                URL jar = ClassLoader.getSystemClassLoader().getResource("recourceLoader.class");
                String tString=jar.getPath().substring(0,jar.getPath().length()-20);
                tString=tString.substring(5,tString.length());
                System.out.println(tString);
                ZipInputStream zip = new ZipInputStream(new FileInputStream(tString+"/"+path));
                while(true) {
                  ZipEntry e2 = zip.getNextEntry();
                  if (e2 == null){break;}
                  String name = e2.getName();
                  System.out.println(name);
                }
              
                }catch(Exception e2) {e2.printStackTrace();}

Ich verstehe nicht was ich falsch mache, ich habe im Internet zahlreiche Beispiele gesehen wo Leute einen ZipInputStream auf diese oder ähnliche weise erzeugen.

Vielen Dank für die Hilfe!

MfG Arn

P.S. Bash meint in diesem Fall Terminal.
 

Gucky

Top Contributor
Der ZipInputStream muss auf das JAR zeigen.
Es kann aber auch sein, dass die JVM oder das Betriebssystem das JAR sperrt, da es zurzeit in Benutzung ist.
 

Gucky

Top Contributor
Die Idee hinter einem ZipInputStream ist die, dass man dem ZipInputStream einen (File)InputStream übergibt, der auf den ZIP komprimierten Ordner zeigt. Mithilfe des ZipInputStreams "hangelt" man sich dann innerhalb des ZIP komprimierten Ordners bis zur gesuchten Datei. Das du mit der URL nicht weit kommst, liegt daran, dass ein ZIP komprimierter Ordner eigentlich nichts mehr mit einer Dateistruktur, wie du sie kennst zutun hat. Es ist eigentlich eine einzelne Datei, in der man mit den passenden Algorithmen nur eine Dateistruktur sichtbar machen kann.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
MiMa Filtern von TableView Liste Allgemeine Java-Themen 2
B Liste aller Kombintionen mit Einschränkungen Allgemeine Java-Themen 8
TheSepp Wie kann man Leerzeichen aus einer Array liste entfernen? Allgemeine Java-Themen 10
B Liste ändern während Iteration über Diese? Allgemeine Java-Themen 16
D Erste Schritte Liste erweitern Allgemeine Java-Themen 11
sserio Variablen Liste erstellt und ein Problem mit dem Index Allgemeine Java-Themen 6
L allgemein Strings händisch in Liste sortieren Allgemeine Java-Themen 47
M einfach verkettete Liste verstehen Allgemeine Java-Themen 23
Drachenbauer wie kann ich alle instanzen einer Klasse durchsehen, ohne, dass diese in einer Liste erzeugt wurden? Allgemeine Java-Themen 11
Gaudimagspam Skip Liste erstellen in Java Allgemeine Java-Themen 3
G Java Editor Löschen doppelter Zahlen einer Liste Allgemeine Java-Themen 2
bueseb84 Spring Boot Entity mit Liste Allgemeine Java-Themen 4
MiMa Werte in liste speichern? Allgemeine Java-Themen 3
Curtis_MC Collections Liste anhand mehrere Kriterien sortieren Allgemeine Java-Themen 6
K verkettete Liste Allgemeine Java-Themen 3
G Liste (UsageStats) sortieren (Android) Allgemeine Java-Themen 5
T Google Links in einer Liste Allgemeine Java-Themen 4
looparda Liste filtern nach Prädikaten verschiedener Typen Allgemeine Java-Themen 3
OSchriever Einfach verkettete Liste ändern Allgemeine Java-Themen 43
L Liste überschreibt alte Elemte Allgemeine Java-Themen 10
H Länge einer verketteten Liste Allgemeine Java-Themen 4
E Erstellen einer Liste mit einer maximalen Menge an Elementen Allgemeine Java-Themen 13
P Element einer Liste wurde hinzugefügt, aber es gibt keinen Zugriff Allgemeine Java-Themen 2
S Methoden Liste soll Methode aus innerer Klasse aufrufen Allgemeine Java-Themen 4
L Erste Schritte Liste von Datums filter nach Monate Allgemeine Java-Themen 4
Y Liste in Stream Packen Allgemeine Java-Themen 1
K Einfache Verkettete Liste mit Node Allgemeine Java-Themen 3
perlenfischer1984 Reflection : Element in generische Liste hinzufügen Allgemeine Java-Themen 4
perlenfischer1984 Liste mit generics zurück liefern Allgemeine Java-Themen 8
S Verkettete (Teil)Liste sortieren ( rekursiv bis n) Allgemeine Java-Themen 2
G Liste zwischen zwei Kalenderdaten erstellen Allgemeine Java-Themen 3
B Wie vergleiche ich Strings in einer Liste? Allgemeine Java-Themen 5
Viktim Threads Liste In unterschiedlichen Threads bearbeiten Allgemeine Java-Themen 23
A Collections Inhalt einer Liste mit Inhalt anderer Liste vergleichen ? Allgemeine Java-Themen 7
I Abstrakte Datentypen - Liste Allgemeine Java-Themen 9
D Datentypen Klassenattribut aus Objekt in generischer Liste Allgemeine Java-Themen 15
P Liste zu Objekt umwandeln Allgemeine Java-Themen 4
Z In die Liste kann ich nichts adden Allgemeine Java-Themen 16
C Liste checken auf MINDESTENS ein Objekt | Bukkit Allgemeine Java-Themen 3
M liste von listen anders ausgeben Allgemeine Java-Themen 1
B Per Buttonklicks einer Liste Wörter hinzufügen - Wie umsetzen? Allgemeine Java-Themen 11
H Liste sortieren anhand optionalem Property Allgemeine Java-Themen 3
L Liste führt sich nicht weiter Allgemeine Java-Themen 5
J Fragen zu generischer doppelt verketteter Liste (bei fehlendem Grundverständnis) Allgemeine Java-Themen 1
B Prüfen, ob ein Element in der Liste nicht existiert Allgemeine Java-Themen 3
B Klassen JTable mit einer Liste Allgemeine Java-Themen 0
X HTTP Auslesen der Ergebnisse von einer Webseite und in eine Liste packen Allgemeine Java-Themen 1
A Auslesen einer Datei sowie ausgeben als Liste in App Allgemeine Java-Themen 5
E Liste löscht sich selbstständig Allgemeine Java-Themen 5
H Liste von Objekten generisch sortieren Allgemeine Java-Themen 0
D Liste anhand Standardnormalverteilung befüllen Allgemeine Java-Themen 1
M Threads synchroner Zugriff (add/delete/read) auf eine Liste Allgemeine Java-Themen 6
T Datentypen Eine Liste - verschiedenen Klassen - eine Abstracte Klasse Allgemeine Java-Themen 3
M Werte aus DB in Liste speichern ohne mehrfach speicherung Allgemeine Java-Themen 18
G Liste anzahl der gleichen Objekte Allgemeine Java-Themen 6
S Pattern.Match Suche: For Schleife einbinden und in Liste schreiben Allgemeine Java-Themen 3
O aus Liste ein beliebiges Element auswählen Allgemeine Java-Themen 7
J Liste aller Com-Ports - zweistellige Ports? Allgemeine Java-Themen 15
O MVC - wo Liste der ComboBox-Items ermitteln Allgemeine Java-Themen 3
MiMa Liste von Pfaden in eine textArea schreiben Allgemeine Java-Themen 7
K kontinuierlich aktuelle Bestellsystem-Liste mit farbigem Status Allgemeine Java-Themen 2
A Auswählbare Liste Allgemeine Java-Themen 2
D Sortieren von Liste zu unperformant Allgemeine Java-Themen 6
N Liste gesucht Allgemeine Java-Themen 2
Z Sortiertes Einfügen in doppelt verkettete Liste Allgemeine Java-Themen 5
S Probleme beim Auslesen einer Liste Allgemeine Java-Themen 8
O JSON String bauen aus Liste Allgemeine Java-Themen 2
M Über Liste verschiendene JComponents mit eigenem implementierten Interface ansprechen Allgemeine Java-Themen 7
T Hashmap mit geordneter/ungeordneter liste als Value Allgemeine Java-Themen 5
D Zugriff auf Array-Liste Allgemeine Java-Themen 19
S Threads Liste mit Objekten in Teillisten zerlegen und abarbeiten Allgemeine Java-Themen 3
R ThreadPool - vorhandene thread liste überprüfen bzw. aufräumen Allgemeine Java-Themen 3
pg1337 Liste füllen Allgemeine Java-Themen 2
U Große Liste von Strings mit indiziertem Zugriff Allgemeine Java-Themen 31
B Properties File Liste Allgemeine Java-Themen 3
Gossi Collections Liste zusammenfassen für JSP Allgemeine Java-Themen 4
Gossi Collections (Unbekannte) Liste Sortieren Allgemeine Java-Themen 10
T Collections Liste schnell/nebenläufig durchgehen Allgemeine Java-Themen 2
M Objekt aus Liste in Liste suchen/löschen Allgemeine Java-Themen 6
Q "Doppelte" Einträge einer Liste entfernen Allgemeine Java-Themen 14
C Exponentielle Verteilung in einer Liste Allgemeine Java-Themen 7
Nic.o liste der installierten Zertifikate ?! Allgemeine Java-Themen 3
T Liste mit GregorianCalendar-Objekten in List einlesen, mit Collection sortieren und ausgeben Allgemeine Java-Themen 3
M Verständnisfragen bezüglich Liste Allgemeine Java-Themen 3
S AWT Wie bekomme ich eine Liste aller chars in einem Font? Allgemeine Java-Themen 3
J Zeichenketten-Liste filtern Allgemeine Java-Themen 6
S Aus einer Liste<Oberklasse> alle Elemente die eine bestimmte Unterklasse von Oberklasse haben filter Allgemeine Java-Themen 8
K Liste aller implementierenden Klassen einer Oberklasse anzeigen Allgemeine Java-Themen 4
M Eintrag verschwindet aus Liste Allgemeine Java-Themen 3
E Objekte in einer Liste suchen. Allgemeine Java-Themen 4
I Über eine Liste iterieren und Objekte löschen. Wie löst man das sauber? Allgemeine Java-Themen 5
reibi Kopie einer Liste Allgemeine Java-Themen 4
N Liste mit Map abgleichen extrem langsam Allgemeine Java-Themen 6
C Darstellung der Liste bei vielen Daten extrem langsam Allgemeine Java-Themen 11
T Liste sortieren Allgemeine Java-Themen 6
L Objekte in Liste packen Allgemeine Java-Themen 2
N Liste aendern waehrend des iterierens ueber selbige Allgemeine Java-Themen 11
B Datenstruktur: Liste Allgemeine Java-Themen 5
S Liste mit verschiedenden Objekten Allgemeine Java-Themen 15
D Einfach verkettete Liste Allgemeine Java-Themen 3

Ähnliche Java Themen

Neue Themen


Oben