Ist mein Programm in einem Jar-File?
-
Original erstellt von Doktor Prokt:
Ich bin mir nicht sicher, aber kommt man an die Dateien in einer jar-Datei nicht über die Zip-API?Jo! ...man kommt da auch direkt mit der Klasse java.util.jar.JarFile ran. Das Problem ist nur, dass man dafür erstmal ein JarFile haben muss.
-
nur mal so eine idee ...
jar-files enthalten doch immer ein manifest ... könntest du nicht einfach getManifest aufrufen und wenn du null zurückbekommst, dann ist es halt kein jar-file ....
-
gut an
-
"getManifest" von welcher Klasse bzw. welchem Objekt?
-
aus der von dir genannten java.util.jar.jarfile
oder habe ich was übersehen?
-
Original erstellt von Anfaenger:
**
oder habe ich was übersehen?**Ja! Leider, es wäre schön, wenn das so leicht gehen würde!
...aber ich habe erstmal garkein JarFile, von dem ich getManifest aufrufen könnte. ...und wenn ich ein JarFile habe, dann weiß ich ja schon, dass es ein JarFile ist.
-
also wenn ich das hier richtig verstehe, musst du nicht wissen, dass es ein jar file ist, damit du es als jar file öffnen kannst:
The JarFile class is used to read the contents of a JAR file from any file that can be opened with java.io.RandomAccessFile. It extends the class java.util.zip.ZipFile with support for reading an optional Manifest entry. The Manifest can be used to specify meta-information about the JAR file and its entries.
Aber ich gebe dir recht, dass du dafür erstmal den dateinamen kennen musst
-
Scheint mir sehr Suspekt dein Vorhaben.
Wenn deine Anwendungen irgendeine Resource im Klassenpfad hat und du dir die URL über getResource ziehst stand, glaube ich, der JAR-Name in der URL wenn die Anwendung in ner JAR liegt ansonsten net.
Kann mich aber auch täuschen.O'Dog
-
Ja, ich werde es wohl so machen müssen. ...obwohl mir diese Lösung nicht wirklich gefällt. Eigentlich mag ich nicht gerne irgendwelche Dateinamen aus Strings oder URLs extrahieren. Ich denke, da kann ne Menge schief gehen. ...andererseits mache ich das eh schon und es sollte nicht so schwer sein, da die URL bei einer Jar-Datei mit "jar:" anfängt und hinter der Jar-Datei erstmal ein "!" hat.
[ Dieser Beitrag wurde am 27.01.2003 um 01:14 Uhr von Gregor editiert. ]
-
Hat geklappt!
...sieht aber trotzdem total hässlich aus, aber irgendwie sieht bei mir das dynamische Klassenladen generell hässlich aus. ...egal: Jetzt funktioniert JImP wenigstens endlich auch in Form einer Jar-Datei! ...ich glaube, ich mache daraus ein Bildverarbeitungs-Applet!
-
Original erstellt von Gregor:
...sieht aber trotzdem total hässlich aus, aber irgendwie sieht bei mir das dynamische Klassenladen generell hässlich aus. ...egal: Jetzt funktioniert JImP wenigstens endlich auch in Form einer Jar-Datei! ...ich glaube, ich mache daraus ein Bildverarbeitungs-Applet!Hast dir mal überlegt dein Plugin-Geraffel vom Design her vielleicht a bissel anders zu handlen? Irgendwie denke ich das deine Lösung net besonders gut ist
Vielleicht etwas in Anlehnung an dem Eclipse-Plugin-Geraffel?O'Dog
-
Original erstellt von O'Dog:
**
Vielleicht etwas in Anlehnung an dem Eclipse-Plugin-Geraffel?
**Wie wird das da gelöst?
-
ich weiss zwar nicht genau, ob das funktioniert...
ich habs eben nur mal schnell überflogen,
aber so wie ich das verstanden habe kannst du dir auch den Quellcode von Eclipse anschauen: http://www.eclipse.org/eclipse/faq/eclipse-faq.html#plugin_8Wenns das so ist, wie ich mir das jetzt denke, dann könntest Du es Dir da genauer anschauen
[ Dieser Beitrag wurde am 27.01.2003 um 15:12 Uhr von Ingo aka Desert Hawk editiert. ]
-
Original erstellt von Gregor:
Wie wird das da gelöst?Vom Konzept her das du halt deine Anwendung in den Hauptordner hast und es einen Unterordner "Plugins" gibt wo du für jedes neue Plugin ein Ordner anlegst wo zum einen die JAR der Plugin-Logik liegt und dazu 'ne XML-Datei wo so sachen stehen können wie Menü-Erweiterungen (oder Toolbar) und die Hauptklasse etc.
Um zu Prüfen ob es einen neues gibt guckst du ob ein neuer Ordner im Plugins-Ordner existiert und validierst die Config(XML)-Datei.
Hioer mal 'ne Beschreibung wie man für Eclipse ein Plugin baut http://www.eclipse.org/articles/index.html als Inspiration.
Hab auch net mehr genau in Erinnerung wie das bei dir lief, ich glaub du bist rekursiv alle Dateien (Klassen) durchgegangen und hast geprüft ob es eine bestimmte Super-Klasse hat?
O'Dog
-
Ich habe auch ein Plugin-Verzeichnis mit Unterverzeichnissen, wo alle Plugins drinstehen. ...und da stehen auch größtenteils nur Plugins drin. Ich teste zwar bei jeder Klasse, die ich lade nochmal, ob es sich um ein Plugin handelt, eigentlich müßten aber alle Klassen, die ich lade, Plugins sein (das sind eh nichtmal 15 Stück). Ich mache also eigentlich keine unnütze Arbeit oder so.
Da Eclipse wohl auch auf Dateien und Verzeichnisse zugreifen muss, um festzustellen, ob es neue Plugins gibt etc, hat man bei so einer Variante zudem das gleiche Problem mit den Jar-Dateien, ist also von daher auch nicht vorteilhaft.
...und das mit der Jar-Datei ist mir eigentlich schon wichtig! -> Wie gesagt: Ich möchte da vielleicht ein Applet draus machen. Das Programm wäre dafür auch nicht zu groß. Ich habe vorhin mal überschlagen, dass ich, wenn ich das Startbild weglasse und das Programm eine maximale Größe von 400kB haben dürfte, noch Platz für die 5-fache Funktionalität des aktuellen Programms habe. ...ist natürlich ziemlicher Unsinn, daraus ein Applet zu machen, aber ich kann es tun und das ist Grund genug, es zu tun!
EDIT : BTW : Hat jemand Lust, ein Office-Paket-Applet zu schreiben?!
[ Dieser Beitrag wurde am 27.01.2003 um 19:14 Uhr von Gregor editiert. ]
-
Original erstellt von Gregor:
...und das mit der Jar-Datei ist mir eigentlich schon wichtig! -> Wie gesagt: Ich möchte da vielleicht ein Applet draus machen.Ach so, hab es wohl überlesen. Jetzt wird mir auch einiges klarer (das mit diesem JAR-Rumgehampel)...ansonsten ist es prinzipiell so wie ich mir das vorgestellt habe.
bis dänn, O'Dog (der keine Applets mag)
[ Dieser Beitrag wurde am 27.01.2003 um 19:17 Uhr von O'Dog editiert. ]