Bearbeitung a.jar mit ' vim`

Auf einer Amazon Linux-Instanz versuche ich, eine JAR-Datei remote über Putty zu bearbeiten. vim bietet einen praktischen Navigator, der eine Eingabeaufforderung mit einer Liste der enthaltenen Dateien im 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
     ....

Jedoch nach Auswahl einer Datei (zB. AbstractComponent.klasse) und drücken Sie die Eingabetaste, innerhalb von vim erhalte ich:

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

Und die Datei wird nicht geöffnet.

Als Randnotiz habe ich auch bemerkt, dass, wenn ich das Glas extrahiere (entweder mit unzip oder jar) und ein extrahiertes öffne datei mit vim, der Inhalt ist falsch formatiert:

Êþº¾^@^@^@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...
....

Irgendwelche Ideen, wie man den Fehler oder das Formatierungsproblem überwindet?

Author: ile, 2014-02-05

2 answers

Jedoch nach Auswahl einer Datei (zB. AbstractComponent.klasse) und drücken Geben Sie ein, innerhalb von vim bekomme ich:

Achtung: Dateiname stimmt nicht überein

Dies ist wahrscheinlich ein bekannter Fehler im ZIP-Plugin von vim - das Plugin behandelt ZIP-Dateien, die ZIP-Kommentare enthalten, nicht ordnungsgemäß. Siehe z.B. dieser Mailinglisten-Beitrag

Als Randnotiz habe ich auch bemerkt, dass, wenn ich das Glas extrahiere (entweder mit entpacken oder jar) und öffnen Sie eine extrahierte Datei mit vim, den Inhalt sind falsch formatiert

Dies liegt daran, dass die meisten Dateien in einem JAR kompilierte Java-Klassendateien sind (Dateisuffix .class). Dies sind binäre Daten, und vim ist nicht wirklich geeignet, sie zu bearbeiten, da vim ein Text Editor ist, kein binärer Editor.

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

Auf jeden Fall ist das direkte Anzeigen des Inhalts einer Klassendatei selten hilfreich, da Sie das Binärklassendateiformat verstehen müssen, um sie zu lesen.

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

 4
Author: sleske,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2014-02-05 10:15:29

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 C-x C-s (Strg+x, gefolgt von Strg+s).

Quelle: Verwendung des Emacs-Editors unter Linux

 1
Author: John Joe,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2017-02-13 04:05:24