Ordner in jar dateien einfügen

Benni1000

Mitglied
Hi. ich schreibe gerade ein programm welches, ein File Array verarbeiten soll, und dieses in eine .jar datei übertragen soll.
Das problem an der Sache ist das ich jetzt nicht mehr weiter weis.
Wie schaffe ich es das Ordner korrekt verarbeitet werden?
Atm werden nur Dateien kopiert, weil ich mich mit rekursiver verarbeitung von dateien nicht wirklich auskenne.
Ich hatte es allein versucht, das hat aber damit geendet das es einen Critical Java error gab, und mein Programm abgestüzt ist,
inklusive "ubuntu hat ein problem festgestellt...".

Java:
private void addFiles(File[] files, JarFile jar) {
        JarOutputStream jos = null;
        try {
            //extract jarfile
            String p = settings.workdir + "temp";
            for (JarEntry entry : Collections.list(jar.entries())) {
                try {
                    new File(p).mkdirs();
                    extractJarEntry(jar, entry, p);
                } catch (IOException ex) {
                    Logger.getLogger(ModDownloader.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
            p = p + "/";
            if (settings.osname.contains("win")) {
                p = p.replace("/", "\\");
            }
            for (File file : files) {
                copy(file.getAbsolutePath(), p + file.getName());
            }
            String ptm = settings.mcdir + "/bin/minecraft.jar";
            if (settings.osname.contains("win")) {
                ptm = ptm.replace("/", "\\");
            }
            jos = new JarOutputStream(new FileOutputStream(new File(ptm)));
            File[] listFiles = new File(p).listFiles();
            for (File file : listFiles) {
                if (file.isDirectory()) {
                    //Hier weiß ich nicht mehr weiter ;_;
                } else {
                    jos.putNextEntry(new JarEntry(file.getName()));
                    InputStream in = new FileInputStream(file);
                    int len;
                    while ((len = in.read(BUFFER)) > 0) {
                        jos.write(BUFFER, 0, len);
                    }
                    in.close();
                    jos.closeEntry();
                }

            }
        } catch (IOException ex) {
            Logger.getLogger(ModDownloader.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            try {
                jos.close();
            } catch (IOException ex) {
                Logger.getLogger(ModDownloader.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    }

Das hier ist mein code.
Wäre nett wenn mir jemand helfen könnte.

Mfg Benni1000
 
Ohne Fehlermeldung wird es nur unnötig kompliziert dein Problem zu lösen?

Kannst du die Javafehlermeldung und die genaue Ubuntufehlermeldung hier mal reinschreiben?
 
Ich nehme an es geht hier um das einfach Installieren von Minecraft-Mods. Nun, dazu ein paar Anmerkungen :

1) sowas gibt es bereits : MCPatcher , ist ebenfalls in Java geschrieben und damit auch unter Unix lauffähig
2) du musst das Quell-Zip (Jar muss hier nicht sein denn du nutzt dessen Besonderheiten in diesem Fall eh nicht) nicht entpacken sondern kannst direkt aus diesem lesen und dabei in das Ziel-Zip schreiben
3) befasse dich mal mit "Rekursion" damit du auch weist wie man tiefere Strukturen rekursiv abarbeitet (was hier allerdings eher weniger wichtig ist)
 

Zurück
Oben