Sonstiges

Mac Wie ändert man eine Java-JAR-Datei?

D

dudleybrooks

Originalplakat
04.04.2011
San Francisco
  • 14. April 2011
Ich muss eine einfache Änderung in einer Anwendung (Thunderbird.app) vornehmen - eine einzelne Zeile in einer .jar-Datei ändern. Auf meinem alten Windows-Computer wusste ich, welche Software ich verwenden sollte. Was ist der einfachste Weg in Snow Leopard, um die .jar-Datei in der App zu öffnen, zu ändern und zu speichern? Vorzugsweise mit Dingen, die in das Betriebssystem integriert sind; wenn nicht, dann mit Freeware?

jiminaus

16. Dezember 2010


Sydney
  • 15. April 2011
Eine .jar-Datei ist nur eine .zip-Datei mit einer anderen Erweiterung (und einem standardmäßigen/vordefinierten Layout). Sie können die Standard-Zip- und Unzip-Programme in /usr/bin verwenden, um eine .jar-Datei zu ändern, vorausgesetzt, sie ist nicht signiert.

'Eine einzelne Zeile in einer .jar-Datei ändern' ist im Kontext einer .jar-Datei nicht direkt sinnvoll. Wenn Sie uns genau sagen, was Sie mit dieser .jar-Datei machen möchten, können wir Ihnen möglicherweise sagen, welche Mac OS X-Tools/Programme Sie verwenden können und wie. m

Mufflon

15.09.2006
  • 15. April 2011
Drahtlos gepostet (Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_2_1 wie Mac OS X; sv-se) AppleWebKit/533.17.9 (KHTML, wie Gecko) Version/5.0.2 Mobile/8C148 Safari/6533.18.5)

Es gibt wirklich drei Phasen: Extraktion, Modifikation und Zusammenbau.

Das Extrahieren ist einfach: Rechtsklick und Aufheben aufheben (afaik).

Modifikation: Wenn es das Manifest ist (wick-Klasse zum Ausführen usw.), dann ist es einfach, aber die Java-Dateien werden in .class-Dateien kompiliert und müssen vor der Modifikation zerlegt werden.

Um alles zusammenzusetzen, googeln Sie den Befehl 'jar' für das Terminal.

Wenn es FOSS ist, ist es besser und einfacher, aus dem Quellcode zu kompilieren; wenn nicht, dann finde ich es nicht 100% legitim. D

dudleybrooks

Originalplakat
04.04.2011
San Francisco
  • 15. April 2011
Ich muss eine Zeile in einer .js-Datei ändern, die in der .jar-Datei enthalten ist. Aber deine Antwort klärt meine Frage:

Ich habe diese Änderung viele, viele Male unter Windows vorgenommen (nämlich jedes Mal, wenn ich ein Upgrade heruntergeladen habe, wodurch meine vorherige Änderung natürlich gelöscht wurde). Die Person, die die Änderung empfahl, empfahl auch einen (Un-)Archivierer namens IZArc, in dem der gesamte Prozess von IZArc aus durchgeführt werden könnte -- öffnen (dearchivieren) Sie die .jar-Datei, suchen Sie die .js-Datei, bearbeiten Sie die Zeile ... Wenn Sie dann auf Beenden klicken, wird alles in den archivierten Zustand zurückgesetzt.

Mir ist bewusst, dass ich die .jar-Datei mit jedem Unarchiver dearchivieren und die .js mit jedem Texteditor bearbeiten kann. Ich denke, meine Sorge ist, dass ich, da ich kein Programmierer bin, beim erneuten Archivieren etwas Schädliches tun könnte - nicht alle relevanten Dateien archivieren oder zu viele Dateien archivieren oder so.

Meine Frage ist also: Gibt es einen Archivierer (hoffentlich im Betriebssystem), der all dies von sich aus erledigt, damit ich weiß, dass die endgültige .jar genau die Dateien enthält, die sie enthalten sollte? Oder was muss ich tun, wenn dies nicht der Fall ist, um sicherzustellen, dass ich es ordnungsgemäß erneut archiviert habe? Mir ist klar, dass dies in diesem Forum eine komplette Anfängerfrage ist.

nicht nur jay

19.09.2003
Kanada, oder?
  • 15. April 2011
Nun, wenn .jar-Dateien einfach ZIP-Dateien mit einer anderen Erweiterung sind, können Sie sie mit den Befehlen 'zip' und 'unzip' frei vom Terminal zippen und entpacken.

chown33

Moderator
Mitarbeiter
9. August 2009
die abgründige Ebene
  • 15. April 2011
notjustjay sagte: Nun, wenn .jar-Dateien einfach ZIP-Dateien mit einer anderen Erweiterung sind, können Sie sie mit den Befehlen 'zip' und 'unzip' frei vom Terminal zippen und entpacken.

Oder verwenden Sie den Befehl 'jar', der ausdrücklich zu diesem Zweck geschrieben wurde und die korrekte Reihenfolge der Manifeste beibehält (die normalerweise als erster Eintrag oder höchstens als einer der ersten Einträge vorhanden sein müssen).

Ich bin mir ziemlich sicher, dass der Befehl jar standardmäßig installiert ist. Dies sollte auch für 10.7 Lion gelten.
Reaktionen:abronsdilan

nicht nur jay

19.09.2003
Kanada, oder?
  • 15. April 2011
chown33 sagte: Oder verwenden Sie den 'jar'-Befehl, der ausdrücklich für diesen Zweck geschrieben wurde und die korrekte Reihenfolge für Manifeste beibehält (die normalerweise als erster Eintrag oder höchstens als einer der ersten vorhanden sein müssen).

Ich bin mir ziemlich sicher, dass der Befehl jar standardmäßig installiert ist. Dies sollte auch für 10.7 Lion gelten.

Ach, noch besser. Danke, wusste das nicht.

PilotError

12. April 2006
Long Island
  • 15. April 2011
Oder Sie können den jar-Befehl verwenden. Die Parameter sind genau wie die Befehlszeilen-Zip-Dienstprogramme

$jar -xvf jarfile.jar ** Extrahiert die Dateien

** Datei bearbeiten **

$jar -cvf jarfile.jar ** Erstellen Sie die neue Jar-Datei
Reaktionen:abronsdilan D

dudleybrooks

Originalplakat
04.04.2011
San Francisco
  • 15. April 2011
Vielen Dank. Die Methode von PilotError war unkompliziert und erfolgreich – keine Softwarefehler, Anfängerfehler oder sogar Pilotenfehler. Aber es hatte immer noch mehr Schritte als ich früher in Windows brauchte: Wechseln vom Terminal nach dem Dearchivieren auf den Desktop, um einen Editor zu verwenden (mein Fehler, zugegeben, den/die Unix-Editor(en) nicht zu kennen, auf die Terminal Zugriff hat) , dann zurück zum Terminal zum erneuten Archivieren -- plus die weiteren Tastenanschläge, die für die Unix-Befehle benötigt werden. Ich würde immer noch gerne einen Editor finden, der *alles* in einem Programm erledigt, wie IZArc in Windows: Strg-Öffnen, Bearbeiten, Strg-Schließen -- zip-zip (Wortspiel beabsichtigt)!

chown33

Moderator
Mitarbeiter
9. August 2009
die abgründige Ebene
  • 15. April 2011
dudleybrooks sagte: Danke. Die Methode von PilotError war unkompliziert und erfolgreich – keine Softwarefehler, Anfängerfehler oder sogar Pilotenfehler. Aber es hatte immer noch mehr Schritte als ich früher in Windows brauchte: Wechseln vom Terminal nach dem Dearchivieren auf den Desktop, um einen Editor zu verwenden (mein Fehler, zugegeben, den/die Unix-Editor(en) nicht zu kennen, auf die Terminal Zugriff hat) , dann zurück zum Terminal zum erneuten Archivieren -- plus die weiteren Tastenanschläge, die für die Unix-Befehle benötigt werden. Ich würde immer noch gerne einen Editor finden, der *alles* in einem Programm erledigt, wie IZArc in Windows: Strg-Öffnen, Bearbeiten, Strg-Schließen -- zip-zip (Wortspiel beabsichtigt)!

Ich kenne kein Tool, das alles kann. Ehrlich gesagt ist dies das erste Mal, dass ich jemanden gefragt habe, wie man eine Datei in einem JAR unter Mac OS bearbeitet, also vermute ich, dass es keinen großen Zielmarkt gibt.

Sie können Befehlszeilen in das Terminal einfügen, also speichern Sie die Befehle einfach in einer Textdatei, kopieren Sie sie und fügen Sie sie ein. Keine Eingabe erforderlich.

Folgendes würde ich ungefähr in der Textdatei speichern:
Code: |_+_| Sie sollten die jarfile.jar natürlich in die tatsächliche jar-Datei ändern, die Sie haben.

Ich habe ## angezeigt, weil dies das eigentliche Kommentarzeichen für die Bash ist.

Ich habe auch einen 'open -e'-Befehl mit einem Pfadnamen angezeigt, den Sie ersetzen müssen. Das open -e öffnet die benannte Datei in TextEdit.app. Wenn Sie stattdessen einen anderen Editor bevorzugen, können Sie 'open' anweisen, ihn stattdessen zu verwenden. Hier ist die Manpage für den Befehl 'open':
http://developer.apple.com/library/mac/#documentation/Darwin/Reference/ManPages/man1/open.1.html
Schauen Sie sich insbesondere die Optionen -a und -b an.

Schließlich können Sie dort andere Befehle eingeben, wie zum Beispiel 'cd someDir' oder was auch immer Sie wollen.

Sie könnten wahrscheinlich ein 'sed'-Skript schreiben, um die Ersetzung durchzuführen, sodass Sie die Datei überhaupt nicht manuell bearbeiten müssen. Dann könnten Sie das Ganze in ein Shell-Skript umwandeln, das in ein AppleScript einpacken und als Droplet speichern. Dann legen Sie in Zukunft einfach Ihre ursprüngliche App auf das AppleScript-Droplet ab und alle Änderungen werden automatisch durchgeführt. Sie müssten jedoch all diese Dinge schreiben und debuggen, und es würde wahrscheinlich Stunden länger dauern, als nur ein Kopieren/Einfügen durchzuführen, wenn die App aktualisiert wird.

Wenn die Änderung am JAR etwas ist, das der Anbieter bereitstellen sollte, sollten Sie wahrscheinlich einen Fehlerbericht gegen die App einreichen. Denn die sauberste Lösung ist, es gar nicht selbst reparieren zu müssen.

PilotError

12. April 2006
Long Island
  • 15. April 2011
Unter Windows können Sie Programme wie pkzip oder winzip verwenden, die den Inhalt im Fenster anzeigen, und Sie können einfach auf eine Datei doppelklicken, die dann unter der Haube extrahiert und an das zugehörige Programm (Editor) gesendet wird.

Es gibt Zip-Dienstprogramme unter OS X, aber zugegeben, ich verwende OS X nicht wie Windows. Ich bin sicher, Sie könnten eines der Programme ausfindig machen, mit denen Sie dasselbe tun können, aber für das, was hier benötigt wurde, lohnte es sich nicht, danach zu suchen. D

dudleybrooks

Originalplakat
04.04.2011
San Francisco
  • 16. April 2011
PilotError und Chown33: Ich bin sicher, Sie haben Recht mit dem Mangel an Markt für OS X.

Chown33: Danke für die Ratschläge zur Automatisierung und die damit verbundenen Details. Ich werde sie versuchen. OMG, ich könnte Programmierer werden!

Es ist etwas *ich* denke, sollte behoben werden, aber es ist kein Fehler: Thunderbird hat eine erweiterte Suche für E-Mail-Adressen, die möglicherweise mehrere Adressen zurückgibt. Wenn Sie auf 'Schreiben' klicken, werden sie alle in die Felder 'An' eingefügt (ohne andere Option). Die Änderung führt dazu, dass sie zur besseren Netiquette in 'BCC'-Felder eingefügt werden. TB 1.x hatte diese Option früher, hat sie aber in 2.x verloren. P

peregin55

25. Februar 2008
  • 8. Mai 2011
Emacs macht was du willst

Unter Linux und Mac OS X verwende ich Emacs, um Dateien in einem JAR zu bearbeiten. Tippe einfach:

emacs somejar.jar

Sie können dann alle Dateien im JAR durchsuchen, öffnen, speichern, was auch immer mit Standard-Emacs-Befehlen. Alle Änderungen, die Sie vornehmen, werden automatisch auf das JAR angewendet (Sie müssen nichts manuell entpacken)
Reaktionen:abronsdilan D

dudleybrooks

Originalplakat
04.04.2011
San Francisco
  • 8. Mai 2011
Vielen Dank!

peregin55

Das ist gut zu wissen.

-
Dudley B

große Katastrophe

14. Januar 2010
  • 8. Juni 2012
arg. es funktioniert nicht. Ich muss ein paar Zeichenfolgen in den .class-Dateien ersetzen (ich verwende genau die gleiche Anzahl von Symbolen), dann versuche ich, sie mit dem Befehl jar neu zu packen, aber die resultierende Datei ist ein paar Byte kleiner als die ursprüngliche, und wenn ich Versuchen Sie, es auf meinem Handy zu installieren, da steht 'falsches JAR-Format'.
Irgendwelche Ideen?

TopHatProductions115

22. August 2016
  • 10.11.2016
pilotError sagte: Oder Sie können den jar-Befehl verwenden. Die Parameter sind genau wie die Befehlszeilen-Zip-Dienstprogramme

$jar -xvf jarfile.jar ** Extrahiert die Dateien

** Datei bearbeiten **

$jar -cvf jarfile.jar ** Erstellen Sie die neue Jar-Datei


Funktioniert dies für signierte Java-Archive?

michaelwarne

11. November 2016
  • 11. November 2016
Sie können den vim-Editor verwenden, um die Dateien in beliebigen komprimierten Textdateien zu bearbeiten.
  1. Navigieren Sie vom Terminal zum Speicherort der Datei.
  2. Geben Sie vim name.jar ein
  3. Wählen Sie die Datei aus, die Sie ändern möchten, und drücken Sie die Eingabetaste
  4. Bearbeiten Sie die Datei und drücken Sie Esc und :wq! zu speichern und zu beenden.
Hoffe das hilft.

okieiam

17.12.2016
  • 18. Dezember 2016
Ja, ich auch, ich habe 7zip verwendet, um den Klassenpfad in der JAR-Datei in Windows zu bearbeiten J

jtara

23. April 2009
  • 21. Dezember 2016
Wenn Sie Thunderbird.app ändern müssen, verwenden Sie die Quelle, nehmen Sie Ihre Änderung vor und erstellen Sie sie.

https://developer.mozilla.org/en-US/docs/Mozilla/Developer_guide/Build_Instructions C

Clovr

13. November 2018
  • 13. November 2018
michaelwarne sagte: Sie können den vim-Editor verwenden, um die Dateien in komprimierten Textdateien zu bearbeiten.
  1. Navigieren Sie vom Terminal zum Speicherort der Datei.
  2. Geben Sie vim name.jar ein
  3. Wählen Sie die Datei aus, die Sie ändern möchten, und drücken Sie die Eingabetaste
  4. Bearbeiten Sie die Datei und drücken Sie Esc und :wq! zu speichern und zu beenden.
Hoffe das hilft.
können wir das nicht mit einer bash automatisieren? Es wäre sehr hilfreich, wenn Sie dadurch aufklären würden.
Reaktionen:abronsdilan