2015-06-19 3 views
-3

Я делал довольно простой банку, чтобы расстегнуть молнию и запустить банку, которая была внутри нее. Проблема, с которой я столкнулся, заключается в том, что она вообще ничего не делает.Jar игнорируя все методы

Это основной и единственный файл класса для банки. Показатель правильно указывает на него, и он загружается без ошибок.

import java.io.File; 
import java.io.IOException; 
import java.io.OutputStream; 
import java.io.FileWriter; 
import java.io.BufferedWriter; 
import java.io.BufferedOutputStream; 
import java.io.BufferedInputStream; 
import java.io.BufferedReader; 
import java.io.FileOutputStream; 
import java.io.FileInputStream; 
import java.io.FileNotFoundException; 
import java.io.InputStream; 
import java.io.InputStreamReader; 
import static java.lang.Integer.parseInt; 
import java.net.URLConnection; 
import java.net.URL; 
import java.util.zip.ZipFile; 
import java.util.zip.ZipEntry; 
import java.util.zip.ZipInputStream; 
import java.util.Enumeration; 
import sign.signlink; 
import java.nio.file.*; 
import java.io.FileReader; 

    public class ClientUpdater { 

    private String fileToExtractNew = "/client.zip"; 

    private String getJarDir() throws FileNotFoundException, IOException{ 
      String linebuf="",verStr=""; 
      FileInputStream fis = new FileInputStream("/runLocationURL.txt"); 
      BufferedReader br= new BufferedReader(new InputStreamReader(fis)); 
      while ((linebuf = br.readLine()) != null) { 
       verStr = linebuf; 
      } 
      return verStr; 
    } 

    public static void main(String[] args) { 
System.out.println("start"); 
    } 

    private void unZip() { 
    System.out.println("unzipping"); 
     try { 
      ZipEntry zipEntry; 
      //client 
      BufferedInputStream bufferedInputStreamNew = new BufferedInputStream(new FileInputStream(this.fileToExtractNew)); 
      ZipInputStream zipInputStreamNew = new ZipInputStream(bufferedInputStreamNew); 

      //client 
      while ((zipEntry = zipInputStreamNew.getNextEntry()) != null) { 
       String stringNew = zipEntry.getName(); 
       File fileNew = new File(this.getJarDir() + File.separator + stringNew); 
       if (zipEntry.isDirectory()) { 
        new File(this.getJarDir() + zipEntry.getName()).mkdirs(); 
        continue; 
       } 
       if (zipEntry.getName().equals(this.fileToExtractNew)) { 
        this.unzipNew(zipInputStreamNew, this.fileToExtractNew); 
        break; 
       } 
       new File(fileNew.getParent()).mkdirs(); 
       this.unzipNew(zipInputStreamNew, this.getJarDir() + zipEntry.getName()); 
      } 
      zipInputStreamNew.close(); 
     } 
     catch (Exception var1_2) { 
      var1_2.printStackTrace(); 
     } 
    } 

    private void unzipNew(ZipInputStream zipInputStreamNew, String stringNew) throws IOException { 
    System.out.println("unzipping new"); 
     FileOutputStream fileOutputStreamNew = new FileOutputStream(stringNew); 
     byte[] arrby = new byte[4024]; 
     int n = 0; 
     while ((n = zipInputStreamNew.read(arrby)) != -1) { 
      fileOutputStreamNew.write(arrby, 0, n); 
     } 
     fileOutputStreamNew.close(); 
     Runtime.getRuntime().exec("java -jar " + getJarDir() + "/Project Pk Client.jar"); 
     System.exit(0); 
    } 
} 

Он показывает сообщение «Старт», но не другие 2, поэтому он никогда не достигает этих методов. Это потому, что их не называют? Я все еще изучаю Java.

+0

Alrighty, это то, о чем я думал. Итак, как я могу это исправить? Я попытался добавить unZip(); к основному методу, но он говорит, что я не могу вызвать нестатический статический метод. Это касается моих знаний. : D – VirtualJunky

ответ

2

Вы на самом деле должны называть ваши другие методы от main. Прямо сейчас, все, что вы говорите, нужно сделать, это распечатать start, а затем выйти. Функции не вызываются просто существующими.

Похоже на быстрый взгляд, который вам нужно добавить unzip(); в вашу функцию main, сразу после линии System.out.println.

Для этого вам нужно сказать, что эти другие методы: static, поэтому вам нужно указать private static void unZip() вместо private void unZip(). Сделайте это и для своих других методов.

import java.io.*; 
import static java.lang.Integer.parseInt; 
import java.net.URLConnection; 
import java.net.URL; 
import java.util.zip.ZipFile; 
import java.util.zip.ZipEntry; 
import java.util.zip.ZipInputStream; 
import java.util.Enumeration; 
import sign.signlink; 
import java.nio.file.*; 

public class ClientUpdater { 

    private String fileToExtractNew = "/client.zip"; 

    private static String getJarDir() throws FileNotFoundException, IOException{ 
     String linebuf="",verStr=""; 
     FileInputStream fis = new FileInputStream("/runLocationURL.txt"); 
     BufferedReader br= new BufferedReader(new InputStreamReader(fis)); 
     while ((linebuf = br.readLine()) != null) { 
      verStr = linebuf; 
     } 
     return verStr; 
    } 

    public static void main(String[] args) { 
     System.out.println("start"); 
     unZip(); 
    } 

    private static void unZip() { 
     System.out.println("unzipping"); 
     try { 
      ZipEntry zipEntry; 
      //client 
      BufferedInputStream bufferedInputStreamNew = new BufferedInputStream(new FileInputStream(this.fileToExtractNew)); 
      ZipInputStream zipInputStreamNew = new ZipInputStream(bufferedInputStreamNew); 

      //client 
      while ((zipEntry = zipInputStreamNew.getNextEntry()) != null) { 
       String stringNew = zipEntry.getName(); 
       File fileNew = new File(this.getJarDir() + File.separator + stringNew); 
       if (zipEntry.isDirectory()) { 
        new File(this.getJarDir() + zipEntry.getName()).mkdirs(); 
        continue; 
       } 
       if (zipEntry.getName().equals(this.fileToExtractNew)) { 
        this.unzipNew(zipInputStreamNew, this.fileToExtractNew); 
        break; 
       } 
       new File(fileNew.getParent()).mkdirs(); 
       this.unzipNew(zipInputStreamNew, this.getJarDir() + zipEntry.getName()); 
      } 
      zipInputStreamNew.close(); 
     } 
     catch (Exception var1_2) { 
      var1_2.printStackTrace(); 
     } 
    } 

    private static void unzipNew(ZipInputStream zipInputStreamNew, String stringNew) throws IOException { 
     System.out.println("unzipping new"); 
     FileOutputStream fileOutputStreamNew = new FileOutputStream(stringNew); 
     byte[] arrby = new byte[4024]; 
     int n = 0; 
     while ((n = zipInputStreamNew.read(arrby)) != -1) { 
      fileOutputStreamNew.write(arrby, 0, n); 
     } 
     fileOutputStreamNew.close(); 
     Runtime.getRuntime().exec("java -jar " + getJarDir() + "/Project Pk Client.jar"); 
     System.exit(0); 
    } 
} 
+0

Я знал, что это будет что-то простое. Большое спасибо. :) – VirtualJunky

+0

@VirtualJunky Вы вполне приветствуетесь :). Если этот ответ был удовлетворительным, пожалуйста, подумайте о том, чтобы он был правильным для будущих посетителей. – Jashaszun

+0

Да, я пытался, но продолжал говорить, что мне почему-то нужно подождать 1 минуту. Но получил его сейчас! – VirtualJunky

Смежные вопросы