Jar忽略所有方法

时间:2015-06-19 21:35:33

标签: java

我正在制作一个非常简单的罐子来拉开拉链并运行里面的罐子。我遇到的问题是它根本不做任何事情。

这是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。

1 个答案:

答案 0 :(得分: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);
    }
}