.jar aus .jar herauskopieren

JJK3

Aktives Mitglied
hab (mit BlueJ) eine .jar erzeugt und eine andere .jar mit hereingetan!!!
Jetzt möchte ich zur Laufzeit die .jar in der .jar aus der .jar herauskopieren und (z.B.) auf den Desktop legen!!!!!!!!!!!!
Habs mal so probiert:

Java:
                URL url = getClass().getResource("nameDerJar.jar");
                File f = new File(url.getFile());

                f.renameTo(new File(autostart.getAbsoluteFile()+"/nameDerJar.jar"));

Geht nicht!!!
Hat jemand ne Idee, wie man das machen könnte?
Ich bin mit meinem Latein am Ende!!

(benutze Windows 7)

Danke schon mal
 
S

Spacerat

Gast
"getClass().getResource()" ist immer so eine Sache. Da wird der Pfad der Ressource klassenrelativ mit Berücksichtigung des Paketverzeichnisses der Klasse erwartet. Hast du in dem Archiv etwa eine Klasse mit dem vollqualifizierten Namen "com.packet.Klasse", so wird sich ihr Bytecode im Verzeichnis "!/com/packet" wiederfinden. Das ist dann auch genau jenes Verzeichnis zu welchem die Pfadangaben relativ angegeben werden müssen. Eine Resource, die im Rootverzeichnis der Jar liegt, bekäme man von dort aus per "../../Resourcename" (nicht sooo toll ;)) oder per "/Resourcename" (vieeel besser ;)). Der Vorangestellte Slash ("/") im letzteren Fall bedeutet, dass man den relativen Klassenpfad aufheben möchte und stattdessen ab der Archiv-Root laden möchte.
 
Zuletzt bearbeitet von einem Moderator:

Clayn

Aktives Mitglied
Also der Weg den du eingeschlagen hast ist schonmal nicht ganz so verkerht.

Ich würds mal so versuchen:
Statt
Code:
URL url = getClass().getResource("nameDerJar.jar");
nimm
Code:
InputStream input=getClass().getResourceAsStream("nameDerJar.jar");
und statt der File mach
Code:
OutputStream output=new FileOutputStream(autostart.getAbsoluteFile()+"/nameDerJar.jar");

und dann musst du einfach nurnoch alles was du aus dem InputStream lesen kannst direkt in den OutputStream schreiben und dann sollte die Jar kopiert sein

MFG
Clayn
 

JJK3

Aktives Mitglied
Java:
try {
            InputStream input=getClass().getResourceAsStream("nameDerJar.jar");
               OutputStream output=new FileOutputStream(fileName.getAbsoluteFile()+"/nameDerKopiertenJar.jar");
               int read = 0;
            while (read != -1) { 
                read = input.read();
                  output.write(read);
            }
        } catch (Exception e) {
        }

Habs jetzt so!
Compiliert, funktioniert aber nicht!!!
Irgendjemand ne idee?
 
Zuletzt bearbeitet von einem Moderator:

Clayn

Aktives Mitglied
am besten noch hinter der while-Schleife ein output.flush() und beide Streams schließen. Also input.close() und output.close().
(Bin mir nicht sicher aber könnte sein das durch output.close() das flushen nicht nötig ist aber ich machs trotzdem immer)
 

JJK3

Aktives Mitglied
Danke erstmal, vergesse das flushen und closen immer!! ;)

Egal!!
Funktioniert nämlich trotzdem nicht!!!
Irgendne Idee?
 

Clayn

Aktives Mitglied
Naja kann wie Spacerat schon meinte sachen mitm Pfad sein, also das du da was anderes machen musst. Aber ansonsten Schluck mal nicht einfach die mögliche Exception sondern mach irgendne Testausgabe am besten auch mit Stacktrace etc. Weil es kann sein das irgend ein Fehler ist aber du ihn nicht mitkriegst
 

JJK3

Aktives Mitglied
Keine Exception!! ;(

Wo wird die kopierte .jar den hinkopiert?

[EDIT]Dumme Frage!!!!!!!!!! Sorry

Sorry im falschen verzeichnis gesucht![/EDIT]
 

JJK3

Aktives Mitglied
So:
Java:
public void copyJarOutOfJar ( File zielFile, String nameDerJarImVerzeichnis, String nameDerKopiertenJar) {
 try {
  InputStream input=getClass().getResourceAsStream("/"+nameDerJarImVerzeichnis+".jar");
  OutputStream output=new FileOutputStream(zielFile.getAbsoluteFile()+"/"+nameDerKopiertenJar+".jar");
     int read = input.read();
            while (read != -1) { 
                  output.write(read);
                  read = input.read();
            }
   output.flush();
   output.close();
   input.close();
 } catch (Exception e) {
      e.printStackTrace();
 }
}

So geht's für alle die Interesse haben!
 
Zuletzt bearbeitet von einem Moderator:
S

Spacerat

Gast
Na also!
...und wenn ich mal irgendwo ein Ausrufezeichen vergesse, sag' ich JJK3 hat den gesamten Vorrat weltweit bereits in diesem Thread verbraucht. :lol:
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
I Dateien aus compilietem Jar herauskopieren Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben