Download .jar von github lädt kaputte Datei runter

Tobero

Mitglied
Ich möchte eine .jar Datei von Github runterladen. Ich habe folgendes gefunden.
Aber der von mir kopierte code scheint die Datei nicht vollständig herunter zuladen.
Ich erhalte zwar die Datei, aber wenn ich sie probiere zu einer .zip zu konvertieren, dann bekomme ich nur einen Fehler, der Sagt, das diese Datei ungütlig ist. Wenn ich die größe der (eigentlich) identischen Dateien vergleiche, have ich die gleiche größe.
Es wird nicht an meiner Datei liegen, da ich das selbe (zu .zip) geklappt hat.
Java:
public static void DownloadExtension(ExtensionObject extension, String directory) throws IOException {
        String link = extension.getDownload().toString();
        String fileName = extension.getName() + ".jar";
        URL url = new URL(link);
        HttpURLConnection http = (HttpURLConnection)url.openConnection();
        Map<String, List<String>> header = http.getHeaderFields();
        while(isRedirected(header)) {
            link = header.get("Location").get( 0 );
            url = new URL( link );
            http = (HttpURLConnection)url.openConnection();
            header = http.getHeaderFields();
        }
        InputStream input  = http.getInputStream();
        byte[] buffer = new byte[4096];
        int n = -1;
        OutputStream output = new FileOutputStream(new File(directory + "/" + fileName));
        while ((n = input.read(buffer)) != -1) {
            output.write( buffer, 0, n );
        }
        output.close();
    }
 

mihe7

Top Contributor
Der Code funktioniert einwandfrei, vermutlich hast Du einfach eine falsche URL angegeben.

Aus dem Stackoverflow-Thread angepasstes Beispiel:
Java:
import java.net.*;
import java.io.*;
import java.util.*;

public class Download {
   private static boolean isRedirected( Map<String, List<String>> header ) {
      for( String hv : header.get( null )) {
         if(   hv.contains( " 301 " )
            || hv.contains( " 302 " )) return true;
      }
      return false;
   }
   public static void main( String[] args ) throws Throwable
   {
      String fileName = "syslog4j-0.9.46.jar";
      String link =
         "https://github.com/kbase/jars/raw/master/lib/jars/syslog4j/" +
         fileName;
      URL               url  = new URL( link );
      HttpURLConnection http = (HttpURLConnection)url.openConnection();
      Map< String, List< String >> header = http.getHeaderFields();
      while( isRedirected( header )) {
         link = header.get( "Location" ).get( 0 );
         url    = new URL( link );
         http   = (HttpURLConnection)url.openConnection();
         header = http.getHeaderFields();
      }
      InputStream  input  = http.getInputStream();
      byte[]       buffer = new byte[4096];
      int          n      = -1;
      OutputStream output = new FileOutputStream( new File( fileName ));
      while ((n = input.read(buffer)) != -1) {
         output.write( buffer, 0, n );
      }
      output.close();
   }
}
 

Tobero

Mitglied
Der Code funktioniert einwandfrei, vermutlich hast Du einfach eine falsche URL angegeben.

Aus dem Stackoverflow-Thread angepasstes Beispiel:
Java:
import java.net.*;
import java.io.*;
import java.util.*;

public class Download {
   private static boolean isRedirected( Map<String, List<String>> header ) {
      for( String hv : header.get( null )) {
         if(   hv.contains( " 301 " )
            || hv.contains( " 302 " )) return true;
      }
      return false;
   }
   public static void main( String[] args ) throws Throwable
   {
      String fileName = "syslog4j-0.9.46.jar";
      String link =
         "https://github.com/kbase/jars/raw/master/lib/jars/syslog4j/" +
         fileName;
      URL               url  = new URL( link );
      HttpURLConnection http = (HttpURLConnection)url.openConnection();
      Map< String, List< String >> header = http.getHeaderFields();
      while( isRedirected( header )) {
         link = header.get( "Location" ).get( 0 );
         url    = new URL( link );
         http   = (HttpURLConnection)url.openConnection();
         header = http.getHeaderFields();
      }
      InputStream  input  = http.getInputStream();
      byte[]       buffer = new byte[4096];
      int          n      = -1;
      OutputStream output = new FileOutputStream( new File( fileName ));
      while ((n = input.read(buffer)) != -1) {
         output.write( buffer, 0, n );
      }
      output.close();
   }
}
[/QUOTE]
Danke. Habe jetzt nochmal nachgesehen... und habe das "r" bei .jar vergessen.
 

mihe7

Top Contributor
Wobei das "jar" oben in Deinem Code drin wäre, aber vielleicht meintest Du an anderer Stelle. Jedenfalls übersieht man sowas leicht.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
P Input/Output entfernte Datei mit Java öffnen ohne Download Allgemeine Java-Themen 5
J Programm zum Download von CSV-Dateien Allgemeine Java-Themen 4
B Download von dateien Allgemeine Java-Themen 2
OnDemand Download Textdatei falsches Charset Allgemeine Java-Themen 1
OnDemand FTP Download Charset Allgemeine Java-Themen 1
HarleyDavidson Input/Output Heruntergeladene Datei direkt nach dem Download öffnen ohne zu speichern Allgemeine Java-Themen 1
J Java Progressbar & Download Probleme Allgemeine Java-Themen 10
J Java Download Filedownload File.getFileName Allgemeine Java-Themen 3
J Java JSON-Datei aus .Zip auslesen und Download mit Progress Bar Allgemeine Java-Themen 20
B Download und Öffnen einer Datei mit Java Allgemeine Java-Themen 6
H Pic Download / Regex Problem Allgemeine Java-Themen 7
E Aktienkurs Download API? Allgemeine Java-Themen 2
J Download: Filename + Process waitFor() Allgemeine Java-Themen 5
J Java Communications 3.0 API Download ? Allgemeine Java-Themen 18
T HTTP Skript für Passwortgeschützte Seite :: Häkchen setzen und Download Allgemeine Java-Themen 4
W Java download Allgemeine Java-Themen 4
I URLConnection Upload/Download Allgemeine Java-Themen 3
T Firefox und Webstart: Ohne JNLP Download Allgemeine Java-Themen 2
E Performance website download Allgemeine Java-Themen 13
MQue FTP Verbindung download Allgemeine Java-Themen 5
X Will JAR Datei zum Download anbieten, worauf muss ich rechtlich achten? Allgemeine Java-Themen 2
hdi [Free Download] Film-Datenbank Allgemeine Java-Themen 30
Benji0815 DOWNLOAD von Dateien Allgemeine Java-Themen 2
B maven 2 error bei plugin download Allgemeine Java-Themen 7
J WebBrowser Java Programm Download, Ausführen? Allgemeine Java-Themen 2
A JRE auf eigener Seite verlinken oder zum Download anbieten? Allgemeine Java-Themen 13
M Datei download mit versteckter URL Allgemeine Java-Themen 3
W JNI - C API ? Download ? Allgemeine Java-Themen 3
M Download Covers Allgemeine Java-Themen 2
T Soll ich meine Software als freeware zum download geben? Allgemeine Java-Themen 15
M deutsche Dokumentation zum Download? Allgemeine Java-Themen 7
C Download von Bildern etc. realisieren Allgemeine Java-Themen 2
D Datei mit "Kohsuke GitHub API" in Repository hochladen Allgemeine Java-Themen 2
T Eclipse Synchronisierung mit Github Allgemeine Java-Themen 9
M Test geht auf Travis und mit Github Action schief aber nicht lokal Allgemeine Java-Themen 3
D Java GitHub for Dummies erklärt Allgemeine Java-Themen 31
S Eclipse Github Projekt in eigenes Projekt einbinden und nutzen Allgemeine Java-Themen 13
I bin neu bei GitHub, Frage zur Sicherheit Allgemeine Java-Themen 14
S Java API für GitHub erstellen Allgemeine Java-Themen 14
N Eclipse Projekt von GitHub in bestehendes Projekt einbinden Allgemeine Java-Themen 13
OnDemand GitHub, GoogleCode oder SourceForge Allgemeine Java-Themen 4
bueseb84 Wget mit Wildcards - oder wie lädt man bei JFrog die letzte Version eines Artifacts herunter Allgemeine Java-Themen 3
G JPanel lädt nicht?! Allgemeine Java-Themen 20
@SupressWarnings() Multilanguaging lädt immer falsch Allgemeine Java-Themen 5
Cromewell JavaFX FXML-File lädt unter Ubuntu nicht Allgemeine Java-Themen 7
N Fenster lädt nicht Allgemeine Java-Themen 28
M Wie lädt Eclipse die Javadoc Allgemeine Java-Themen 14
G JList lädt gesamten Datenbestand Allgemeine Java-Themen 5

Ähnliche Java Themen

Neue Themen


Oben