Bearbeiten eines .jar mit `vim`

6517
ile

In einer Amazon Linux-Instanz versuche ich, eine JAR-Datei über Putty remote zu bearbeiten. vimbietet einen praktischen Navigator, der eine Eingabeaufforderung mit einer Liste der enthaltenen Dateien in der jar anzeigt:

> vim filename.jar  " zip.vim version v22 " Browsing zipfile /home/ec2-user/tigase/libs/tigase-muc.jar " Select a file with cursor and press ENTER  453 01-14-2013 10:01 META-INF/MANIFEST.MF 110 01-14-2013 10:01 META-INF/maven/tigase/tigase-muc/pom.properties 4675 01-14-2013 10:01 META-INF/maven/tigase/tigase-muc/pom.xml 5751 01-14-2013 10:01 tigase/component/AbstractComponent.class 2337 01-14-2013 10:01 tigase/component/AbstractComponent$1.class .... 

Nachdem Sie jedoch eine Datei ausgewählt haben (zB AbstractComponent.class) und die Eingabetaste drücken, wird innerhalb von vim Folgendes angezeigt:

caution: filename not matched: 5751 01-14-2013 10:01 tigase/component/AbstractComponent.class 

und die Datei lässt sich nicht öffnen.

Als Randbemerkung habe ich auch bemerkt, dass der Inhalt falsch formatiert ist, wenn ich das Glas extrahiere (entweder mit unzipoder jar) und eine extrahierte Datei mit vim öffne.

Êþº¾^@^@^@2^A^[^H^@ ^H^@ ^H^@^K^H^@^U^H^@^V^H^@!^H^@#^H^@^^A^@) stanza already with type='... ^A^@^C()I^A^@^C()V^A^@^C()Z^A^@^F<init>^A^@^NDEFAULT_WRITER^A^@^WFE... .... 

Ideen, wie Sie den Fehler oder das Formatierungsproblem beheben können?

7
Sie wissen, dass jar im Grunde eine zip ist und dass .class-Dateien Java-Bytecode-Dateien sind? Das heißt, es handelt sich nicht um Textdateien, sondern nur um Datencontainer, und Sie benötigen einen dekompilierten (oder einen Hex-Editor und ein stetiges Auge), um sie lesen zu können. Bobby vor 10 Jahren 2

2 Antworten auf die Frage

4
sleske

Nachdem Sie jedoch eine Datei ausgewählt haben (zB AbstractComponent.class) und die Eingabetaste drücken, wird innerhalb von vim Folgendes angezeigt:

Achtung: Dateiname stimmt nicht überein

Dies ist wahrscheinlich ein bekannter Fehler im ZIP-Plugin von vim - das Plugin verarbeitet ZIP-Dateien, die ZIP-Kommentare enthalten, nicht richtig. Siehe zB diesen Mailinglisten-Beitrag

Als Randbemerkung habe ich auch festgestellt, dass der Inhalt falsch formatiert wird, wenn ich das Glas extrahiere (entweder mit entpacken oder jar) und eine extrahierte Datei mit vim öffne

Dies ist darauf zurückzuführen, dass die meisten Dateien in einer JAR-Datei kompilierte Java-Klassendateien (Dateisuffix .class) sind. Dies sind binäre Daten, und vim eignet sich nicht wirklich zum Bearbeiten dieser Daten, da vim ein Texteditor und kein binärer Editor ist.

Sie können sie in vim mit dem xxdBefehl bearbeiten (siehe "Verwenden von xxd" in den vim-Dokumenten ), oder Sie können einen Hex-Editor wie bvi verwenden .

In jedem Fall ist das direkte Anzeigen des Inhalts einer Klassendatei selten hilfreich, da Sie das binäre Klassendateiformat verstehen müssen, um sie lesen zu können.

Könnten Sie erklären, warum Sie versuchen, Dateien in einem JAR zu öffnen? Dann können wir vielleicht helfen.

'grats auf 10k! ~ Sathya vor 10 Jahren 0
Ich hatte offenbar den Gedanken gemacht, an .java als .class (kompilierte Binärdateien) zu denken und zu erwarten, diese Dateien direkt bearbeiten zu können, dh, dass ich nicht - edit - compress extrahieren muss. Ich werde nachsehen und 'xxd' ausprobieren, vielen Dank! ile vor 10 Jahren 0
@Sathya: Danke, ich habe gerade die Nachricht erhalten :-). sleske vor 10 Jahren 0
1
John Joe

So habe ich die Formatierungsprobleme gelöst.

Installieren Sie zuerst Emacs

 yum install emacs 

Verwenden Sie dann den folgenden Befehl, um den Inhalt zu lesen

emacs somejar.jar 

Wählen Sie den Inhalt aus und drücken Sie Enter

Um den Editor zu speichern und zu beenden, drücken Sie Cx Cs (Strg + x, gefolgt von Strg + s).

Quelle: Verwendung des Emacs-Editors unter Linux

Die Frage ist, wie diese Aufgabe mit "vim" erledigt wird. artificerpi vor 6 Jahren 1