2016-04-18 10 views
0

Ich versuche, ein altes Java-Wrapper-Skript für ein Spiel neu zu erstellen, aber ich weiß nicht, warum ich einen Fehler bekomme, wenn Ich führe es in meinem VPS (CentOS 6), ich bekomme nur den Fehler, wenn ich es dort laufen, in meinem Mac oder PC mit Windows 10 passiert es nicht ...java.io.IOException: Dateigröße falsch (bekomme nur Fehler unter Linux (CentOS 6))

Bereits einen Blick geworfen hier auf Stackoverflow und ich einen gemeinsamen ähnlichen Fehler sah, und das ist, weil die Größe -1 wird, aber ich denke, das ist hier nicht der Fall:

INFO: Downloading the latest version of StarMade (length: 179840020 bytes, URL: http://files.star-made.org/build/starmade-build_20160413_201539.zip)... 

„ls -lha:“

-rw-r--r-- 1 root root 172M Apr 18 11:05 StarMade-latest.zip 

und als 179.840.020 Bytes ~ = 171,5 Megabyte

ist hier der Fehler:

java.io.IOException: File downloaded is the incorrect size! 
    at com.diogosaraiva.starmade.wrapper.VersionManager.downloadUpdate(VersionManager.java:127) 
    at com.diogosaraiva.starmade.wrapper.server.Server.<init>(Server.java:90) 
    at com.diogosaraiva.starmade.wrapper.ServerWrapper.main(ServerWrapper.java:24) 

hier einige von VersionManager.java

final URL url = new URL(remotePath); 
     final URLConnection connection = url.openConnection(); 
     final int size = connection.getContentLength(); 

     if (size < 0) { 
      ServerWrapper.getLogger().info("Unable to get the latest version of StarMade!"); 
     } else { 
      ServerWrapper.getLogger().info("Downloading the latest version of StarMade (length: " + size + " bytes, URL: " + remotePath + ")..."); 
     } 

     inputStream = new BufferedInputStream(url.openStream()); 
     outputStream = new FileOutputStream("StarMade-latest.zip"); 

     final byte data[] = new byte[1024]; 
     int count; 
     double sumCount = 0.0; 
     int percentage; 
     int lastPercentage = 0; 

     while ((count = inputStream.read(data, 0, 1024)) != -1) { 
      outputStream.write(data, 0, count); 

      sumCount += count; 

      percentage = (int) Math.ceil(sumCount/size * 100); 

      if (percentage != lastPercentage) { 
       ServerWrapper.getLogger().info(percentage + "%"); 
      } 

      lastPercentage = percentage; 
     } 

     if (inputStream != null) { 
      inputStream.close(); 
     } 
     if (outputStream != null) { 
      outputStream.close(); 
     } 

     ServerWrapper.getLogger().info("Download finished. "); 

     if (isInstalled() && backup) { 
      ServerWrapper.getLogger().info("Backing up server."); 
      final File f = new File(new SimpleDateFormat("'backup-'MM-dd hh-mm-ss-SS'.zip'").format(new Date())); 
      if (!f.exists()) { 
       f.createNewFile(); 
      } 
      ZipUtils.zipDirectory(starmadeDirectory, f); 
     } 

     if (!starmadeDirectory.exists()) { 
      starmadeDirectory.mkdirs(); 
     } 
     ServerWrapper.getLogger().info("Installing update."); 

     final File starmadeUpdate = new File("starmade-latest.zip"); 

     if (starmadeUpdate.length() != size) { 
      throw new IOException("File downloaded is the incorrect size!"); 
     } 

Also, warum ich erhalte dieser Fehler?

EDIT: Ich laufe als root und die CentOS mit denen ich laufe ist ohne Desktop Enviroment. Ich habe bereits versucht mit Openjdk und Oracle JDK

Antwort

3

Das Problem ist, dass Dateinamen Groß-und Kleinschreibung unter Linux sind.

outputStream = new FileOutputStream("StarMade-latest.zip"); 
... 
final File starmadeUpdate = new File("starmade-latest.zip"); 

Die Datei starmade-latest.zip existiert wahrscheinlich nicht einmal in diesem Verzeichnis. So wird if (starmadeUpdate.length() != size) Null mit der Länge der heruntergeladenen Datei vergleichen.

Überprüfen Sie die Dateinamen und das Problem sollte verschwinden.

+0

es funktioniert, vielen Dank – DiogoSaraiva