JAR Папка Рекурсивлей? - PullRequest
       0

JAR Папка Рекурсивлей?

0 голосов
/ 19 февраля 2012

Как бы я JAR tempfolder для temp.jar?

Поскольку этот текущий код, похоже, успешно создает банку:

public void makeJar() throws IOException {
    File directoryTojar = new File("tempfinal");

    List<File> fileList = new ArrayList<File>();
    System.out.println("---Getting references to all files in: " + directoryTojar.getCanonicalPath());
    getAllFiles(directoryTojar, fileList);
    System.out.println("---Creating jar file");
    writejarFile(directoryTojar, fileList);
    System.out.println("---Done");
}

public void getAllFiles(File dir, List<File> fileList) {
    try {
        File[] files = dir.listFiles();
        for (File file : files) {
            fileList.add(file);
            if (file.isDirectory()) {
                System.out.println("directory:" + file.getCanonicalPath());
                getAllFiles(file, fileList);
            } else {
                System.out.println("     file:" + file.getCanonicalPath());
            }
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
}

public void writejarFile(File directoryTojar, List<File> fileList) {

    try {
        FileOutputStream fos = new FileOutputStream(directoryTojar.getName() + ".jar");
        JarOutputStream zos = new JarOutputStream(fos);

        for (File file : fileList) {
            if (!file.isDirectory()) { // we only jar files, not directories
                addTojar(directoryTojar, file, zos);
            }
        }

        zos.close();
        fos.close();
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

public static void addTojar(File directoryTojar, File file, JarOutputStream zos) throws FileNotFoundException, IOException {

    FileInputStream fis = new FileInputStream(file);

    // we want the jarEntry's path to be a relative path that is relative
    // to the directory being jarped, so chop off the rest of the path
    String jarFilePath = file.getCanonicalPath().substring(directoryTojar.getCanonicalPath().length() + 1,
    file.getCanonicalPath().length());
    System.out.println("Writing '" + jarFilePath + "' to jar file");
    JarEntry jarEntry = new JarEntry(jarFilePath);
    zos.putNextEntry(jarEntry);

    byte[] bytes = new byte[4096];
    int length;
    while ((length = fis.read(bytes)) >= 0) {
        zos.write(bytes, 0, length);
    }

    zos.closeEntry();
        fis.close();

}

когда он пытается найти net.minecraft.client.MinecraftApplet, он говорит, что не найден, но находится в файле jar.

Даже если я разархивирую .jar в папку, а затем сразу перезаписываю его, он все равно выдает эту ошибку:

java.lang.ClassNotFoundException: net.minecraft.client.MinecraftApplet
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at net.minecraft.GameUpdater.createApplet(GameUpdater.java:369)
at net.minecraft.Launcher$1.run(Launcher.java:88)

Что не так?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...