Jar-Datei per Java speichern

Rainbow

Bekanntes Mitglied
Hallo zusammen,
ich benötige ein Programm, dem ich eine URL übergebe in der man verschiedene jar-Datei Dateien herunterladen kann. Weil das sehr sehr viele jar-Dateien sind, soll es das Programm übernehmen, damit ich nicht 200 Dateien manuell herunterladen muss.
Gibt es da schon was vorgefertigtes?

Ich habe es zwar hinbekommen, das die Dateien heruntergeladen werden, aber diese sind nicht vollständig. Also manchmal stehen da nur 2 Dateien drin, obwohl es viel mehr sein müssten.
Manchmal wird mein Programm auch gestartet und dann kann ich Stunden warten, aber es passiert einfach nichts.
Von daher muss ich ja was falsch machen.
Hier mal meine Methode, die das wesentliche übernimmt:

Java:
	private void speicherJars(String url, File file) {
		BufferedInputStream bufferedInputStream = null;
		BufferedOutputStream bufferedOutputStream = null;

		try {
			bufferedInputStream = new BufferedInputStream(new URL(url).openStream());
			FileOutputStream fileOutputStream = new FileOutputStream(file);
			bufferedOutputStream = new BufferedOutputStream(fileOutputStream, 2048);
			byte[] data = new byte[2000];
			int x = 0;
			while((x = bufferedInputStream.read(data, 0, 2000)) >= 0) {
				bufferedOutputStream.write(data, 0, x);
			}
		}
		catch(FileNotFoundException e) {
			e.printStackTrace();
		}
		catch(MalformedURLException e) {
			e.printStackTrace();
		}
		catch(IOException e) {
			e.printStackTrace();
		}
		finally {
			try {
				if(bufferedInputStream != null) {
					bufferedInputStream.close();
				}
				if(bufferedOutputStream != null) {
					bufferedOutputStream.close();
				}
			}
			catch(IOException ex) {
				ex.printStackTrace();
			}
		}
	}

Liebe Grüße
Rainbow
 

madlion

Mitglied
Auf Anhieb würde ich sagen daß es statt
Java:
while((x = bufferedInputStream.read(data, 0, 2000)) >= 0) {
wie folgt lauten müßte.
Java:
while((x = bufferedInputStream.read(data)) > -1) {
Denn read liefert -1 wenn nichts mehr gelesen werden kann.
0 ist ein gültiger Wert und besagt nicht daß der Stream zu Ende ist.
 

Rainbow

Bekanntes Mitglied
Das macht keinen Unterschied.
Auch dabei kommt exakt das gleiche raus. Manche jar-Dateien sind zu klein und haben nur 1 Datei..andere haben von vornherein eine Größe von 0Kb und man kann sie auch nicht entpacken oder so.
 

madlion

Mitglied
Hm... komisch.
Hat es einen besonderen Grund weshalb du BufferedOutputStream bzw. BufferedInputStream verwendest?

An einem fehlenden Flush sollte es ja auch nicht liegen, da du ja jeweils die close Methoden aufrufst welche das laut Api Doc automatisch machen.

Wo kommen den die Jars her? Einfach ein Webserver? Wenn du die Jars über einen Browser herunterlädst sind die aber ok, ja?
 

Lumaraf

Bekanntes Mitglied
Was mir in dem Code auffällt ist das der FileOutputStream nicht geschlossen wird. Die Buffered* Streams sind btw unnötig wenn man zum lesen und schreiben eh schon ein entsprechend großes byte[] als Puffer verwendet.
 

madlion

Mitglied

Rainbow

Bekanntes Mitglied
Also ich hab den Code so benutzt, weil ich ihn so als Beispiel im Netz gefunden hatte.
Wenn ich die Dateien manuell im Browser runterlade sind die in Ordnung.
Den FileOutputStream habe ich jetzt geschlossen, ist mir gar nicht aufgefallen..danke.
Die Buffered-Streams hab ich jetzt auch weggenommen.

Das ändert jedoch gar nichts daran, da die Dateien immer noch zu klein oder gleich 0Kb groß sind. Also nicht vollständig.
 
Zuletzt bearbeitet:

Rainbow

Bekanntes Mitglied
An sich sind die Daten frei zugänglich. Die URL die ich nehme, kann ich so jetzt leider nicht rausgeben. Aber das hat mich auf die Idee gebracht, einfach mal ne andere URL zu testen, wo man auch eine jar runterladen kann...und das funktioniert.
So dann kam mir die Idee, meine Methode nur mal mit einer URL aufzurufen...klappt wunderbar.

Das heißt, an meiner Methode liegt es gar nicht. Fragt sich nur warum es nicht klappt,wenn ich die Methode in ner while-Schleife aufrufe?

Also die Sache ist die, ich will die Dateien nicht irgendwo speichern, sondern in einer gewissen Ordnerstruktur, die ich mir per Programm aufbaue. Das klappt auch. Dann schau ich in der URL nach, wo ich denn die Datei hinstecken möchte. Das entscheid je nach Inhalt des Dateinamen, also nen einfaches contains(). Dann ruf ich halt entsprechend für jede URL die Methode zum Speichern auf.
Und die Dateien werden ja zumindest auch alle angelegt an der richtigen Stelle.

Also woran kann es liegen, das ich einzeln alles gut speichern kann, aber in der Schleife die Dateien zu klein werden?
Hatte auch schon mal nen sleep eingebaut, hat aber nichts gebracht.
 

Rainbow

Bekanntes Mitglied
ja das klappt

Hm...also ich hab halt bei jeder Datei immer das gleiche Ergebnis. Immer die gleiche Größe. Bei jedem Durchlauf.
Das mit dem zu schnell/häufig hab ich auch schon so vermutet, aber müsste es dann nicht mit einem Thread.sleep() besser klappen?

ich mein wenn ich die urls nacheinander manuell in den Browser eingebe klappts ja auch bei jeder Datei.
 

madlion

Mitglied
Es ist leider schwer so aus der Ferne dem Problem näher zu kommen.

Der Code zum Laden und Speichern der Jars sollte soweit passen.
Die Frage ist ja wieso zum Teufel die Jars dann falsch geschrieben werden bzw. falsch auf der Platte landen.
Passiert vielleicht außerhalb der Methode speicherJars() etwas was den Fehler verursacht oder passt irgendwas in der Kommunikation mit dem Server nicht.
Du sagst ja daß es mit einem einzelnen Aufruf von speicherJars() klappt.

Kannst du vielleicht noch ein paar Details über den Server erzählen?
Ist das einfach ein (Apache) Http-Server welcher ohne Umwege einfach die Dateien per Http bereitstellt?
Oder was ist das genau?
 

Rainbow

Bekanntes Mitglied
Also vielen Dank für die Hilfe, aber ich denke jetzt mittlerweile, das es wirklich an der Interseite liegt. Ich habe mein Programm jetzt so abgespeckt, das ich quasi nur in ner Schleife alles stur runterlade und keine anderen Methoden zwischendurch aufrufe....
Es kann einfach nicht am Code liegen.
Von daher geb ich mich damit jetzt einfach zufrieden.
 

Rainbow

Bekanntes Mitglied
So...es liegt an meinem Rechner. Anscheinend hab ich ein Netzwerkproblem oder so. Keine Ahnung, aber beim kollegen klappt es wunderbar. Also muss es ja an meinem Rechner liegen.
 

madlion

Mitglied
Hm... ok du hast zwar keine Lödung dafür daß es bei dir nicht geht aber immerhin geht es überhaupt.

Ich finde es allerdings ungewöhnlich daß es auf deinem Rechner nicht läuft.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Thomasneuling Java Jar datei erstellen, von Projekt, dass auch Javafx Dateien, FXML Dateien und CSS Dateien, sowie Bilder enthält? Allgemeine Java-Themen 14
M Java Überprüfen ob .exe-Datei bereits ausgeführt wird Allgemeine Java-Themen 2
E java mithilfe url .jar datei öffnen Allgemeine Java-Themen 9
E Java .exe Datei mit args starten Allgemeine Java-Themen 2
Master3000 Java Datei mehrmals einlesen Allgemeine Java-Themen 4
E Input/Output Eigene Datei mit java öffnen Allgemeine Java-Themen 9
P Bat Datei in Java ausführen Allgemeine Java-Themen 2
Gaudimagspam CSV-Datei auslesen in Java Allgemeine Java-Themen 7
P Input/Output entfernte Datei mit Java öffnen ohne Download Allgemeine Java-Themen 5
O Java-Applikation tut in Netbeans, als JAR nicht, wegen Pfadangaben einer benötigten Datei Allgemeine Java-Themen 8
Trèfle Excel-Datei nicht speicherbar, da von Java zum Bearbeiten gesperrt. Allgemeine Java-Themen 3
L Excel Datei löscht sich selbst im Programm - Java Allgemeine Java-Themen 3
G Workupload datei mit Java Downloaden Allgemeine Java-Themen 6
M Java Eclipse- Datei exportieren Allgemeine Java-Themen 5
H jar-Datei mit java.exe anstatt mit javaw.exe ausführen Allgemeine Java-Themen 9
Javafan01 .sh datei in Java ausführen Allgemeine Java-Themen 1
K Datei (CSV-ähnlich) in Java einlesen & mit teil der Daten Graphen erstellen Allgemeine Java-Themen 9
G Java Datei öffnen Allgemeine Java-Themen 9
M XML-Datei "erweitern" mit Java Allgemeine Java-Themen 2
J Java 8 Datei einlesen Allgemeine Java-Themen 1
D Java Datei nach Eclipse Export funktioniert nicht Allgemeine Java-Themen 0
E Drucken einer Pdf Datei unter Java. Allgemeine Java-Themen 1
J Java - Zeile aus Text datei löschen Allgemeine Java-Themen 13
J Java - "Umschaltung" in Log Datei Allgemeine Java-Themen 1
J Best Practice Java 8 Datei einlesen und verarbeiten Allgemeine Java-Themen 2
J Java JSON-Datei aus .Zip auslesen und Download mit Progress Bar Allgemeine Java-Themen 20
P Starten einer Java .jar-Datei Allgemeine Java-Themen 0
A Ausführbare Java-Datei aus Projekt und Datenbank Allgemeine Java-Themen 3
J Java Programm - ausführbare Jar Datei erstellen Allgemeine Java-Themen 2
M Text datei in java jar datei einbinden Allgemeine Java-Themen 4
D JAVA - Properties Datei mit Userdaten Allgemeine Java-Themen 7
B Download und Öffnen einer Datei mit Java Allgemeine Java-Themen 6
V C-Header Datei aus .java File herstellen Allgemeine Java-Themen 10
C Umgebungsvariable Java-Datei in anderem Verzeichnis ausführen Allgemeine Java-Themen 2
J Java Datei durch Java Datei öffnen Allgemeine Java-Themen 16
H Eine .java-Datei aus der Windowskommandozeile komplilieren - wie? Allgemeine Java-Themen 7
H java.library.path mit einer Batch-Datei einstellen Allgemeine Java-Themen 3
S jar Datei mit Java Programm öffnen Allgemeine Java-Themen 3
K JAVA Datei einlesen Allgemeine Java-Themen 2
G Java EE, Datei öffnen, HeadlessException Allgemeine Java-Themen 3
M keine Bilder in .jar-Datei (java) Allgemeine Java-Themen 23
M Einlesen einer Datei in Java Allgemeine Java-Themen 3
J Java Datei aus FTP in ein INputstream Allgemeine Java-Themen 2
J Java Datei ausführen Allgemeine Java-Themen 8
J Exe Datei in Java erkennen??? Allgemeine Java-Themen 4
M Java Datei Compilieren Allgemeine Java-Themen 9
T .jar-Datei aus Java heraus aktualisieren Allgemeine Java-Themen 8
B Applet .java Datei einlesen, anzeigen Allgemeine Java-Themen 3
destroflyer Datei mit Java öffnen Allgemeine Java-Themen 3
B Excel Datei in einem Java Programm mit GUI darstellen Allgemeine Java-Themen 9
B Java soll Datei von Javascript empfangen Allgemeine Java-Themen 4
J Java-Datei unter Mac OS X öffnen - eine Frage der Klasse Allgemeine Java-Themen 2
K Datei umbenennen mit Java Allgemeine Java-Themen 6
J xls Datei drucken mit Java Allgemeine Java-Themen 10
M JAVA in BATCH Datei Allgemeine Java-Themen 9
Developer_X Java Applet - Font aus datei laden Allgemeine Java-Themen 15
martin82 Java-Code aus Text-Datei parsen Allgemeine Java-Themen 3
C Java-Datei compilieren Allgemeine Java-Themen 6
M java.awt. Desktop browse lokale datei aus jar Allgemeine Java-Themen 4
L Externes Bash Script aus Java Datei heraus starten Allgemeine Java-Themen 2
Schandro Datei öffnen mit... Bestimmten Dateityp mit einen Java-Programm öffnen lassen Allgemeine Java-Themen 5
Developer_X Mit einer Batch Datei eine Java Datei starten Allgemeine Java-Themen 4
T .jar Datei aus Java Code starten Allgemeine Java-Themen 10
G Java- Programm mit bat- Datei starten Allgemeine Java-Themen 16
C cgi-datei in java erstellen Allgemeine Java-Themen 8
E Eine .wsp datei in java öffnen auslesen und verändern Allgemeine Java-Themen 4
G Java POI HSSF Excel Datei Gruppierung und Gliederung Allgemeine Java-Themen 2
M Java Programm durch Datei Öffnen Allgemeine Java-Themen 6
ARadauer Excel Datei in Excel aus Java heraus öffnen Allgemeine Java-Themen 10
E *.exe- Datei aus einem Java- Programm Allgemeine Java-Themen 3
H aus .class datei eine .java erzeugen Allgemeine Java-Themen 4
I java-datei erstellen unter mac Allgemeine Java-Themen 7
L Frage zu java.util.regex und Einlesen einer Datei Allgemeine Java-Themen 2
N Datei mit Java-Application öffenen Allgemeine Java-Themen 5
meez java.security Datei "überschreiben" Allgemeine Java-Themen 4
T iso datei (Image) mit Java einlesen und Inhalt entpacken Allgemeine Java-Themen 3
S ausführbare Datei aus Java-Programm starten Allgemeine Java-Themen 2
P Drucken einer Excel Datei in Java Allgemeine Java-Themen 8
W Jar datei updaten mit java Allgemeine Java-Themen 4
C mehrere Java Klassen in einer Datei Allgemeine Java-Themen 4
P Excel-Datei mit Java bearbeiten Allgemeine Java-Themen 2
R Java Quellcode zu exe Datei unsw. Allgemeine Java-Themen 5
C RAM Speicher in Datei auslagern (Java Swapping) Allgemeine Java-Themen 4
D Excel-Datei mit Java auslesen Allgemeine Java-Themen 1
kodela StatusBar-Anzeigen auch in Log-Datei ausgeben Allgemeine Java-Themen 3
G Maven Projekt JAR-Datei Allgemeine Java-Themen 6
E XML - Datei Darstellung in IntelliJ als Baum Allgemeine Java-Themen 2
D Erste Schritte Mp3 Datei kann nicht von der Festplatte geöffnet werden - mit ChatGPT erstellt Allgemeine Java-Themen 7
J Filenotfoundexception obwohl Datei existiert Allgemeine Java-Themen 6
S .exe Datei/Programm auslesen? Allgemeine Java-Themen 2
E Datei verschoben Event Allgemeine Java-Themen 3
D Datei mit "Kohsuke GitHub API" in Repository hochladen Allgemeine Java-Themen 2
S Bookmark HTML Datei einlesen, alle Links erhalten und manche editieren..? (aktuell JSoup) Allgemeine Java-Themen 4
melaniemueller Einzelne Zeile aus einer txt Datei in einem String speichern Allgemeine Java-Themen 12
G JavaFX Maven Projekt als .exe Datei exportieren Allgemeine Java-Themen 10
J (Geplante) Änderungen an einer Datei vorübergehend speichern und anwenden? Allgemeine Java-Themen 12
Neumi5694 Datei komprimiert Allgemeine Java-Themen 6
_user_q Obfuscate einer .jar-Datei mit ProGuard? Allgemeine Java-Themen 2
_user_q Verknüpfung einer .jar-Datei (liegt z. B. auf dem Desktop) im Autostart-Ordner erstellen? Allgemeine Java-Themen 20
W Bilder werden in App mit Jar-Datei nicht angezeigt Allgemeine Java-Themen 15

Ähnliche Java Themen

Neue Themen


Oben