web-dev-qa-db-ja.com

`vim`で.jarを編集する

Amazon Linuxインスタンスで、PuTTYを介してjarファイルをリモートで編集しようとしています。 vimは、jarに含まれているファイルのリストを含むプロンプトを表示する便利なナビゲーターを提供します。

> 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
     ....

ただし、ファイル(AbstractComponent.classなど)を選択してEnterキーを押すと、vim内で次のようになります。

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

ファイルが開きません。

ちなみに、jarファイルを(unzipまたはjarのいずれかで)抽出し、抽出したファイルをvimで開くと、内容が正しくフォーマットされていないことにも気づきました。

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

エラーやフォーマットの問題を克服する方法はありますか?

7
ile

ただし、ファイル(AbstractComponent.classなど)を選択してEnterキーを押すと、vim内で次のようになります。

注意:ファイル名が一致しません

これはおそらくvimのZipプラグインの既知のバグです-プラグインはZipコメントを含むZipファイルを適切に処理しません。たとえば、 このメーリングリストの投稿

ちなみに、jarファイルを(unzipまたはjarで)抽出し、抽出したファイルをvimで開くと、内容が正しくフォーマットされていないことにも気づきました。

これは、JAR内のほとんどのファイルがコンパイルされているためですJavaクラスファイル(ファイルサフィックス.class)。これらはバイナリデータであり、vimはtextエディタであり、バイナリエディタではないため、これらの編集にはあまり適していません。

xxdコマンドを使用してvimで編集するか( vimドキュメント の「xxdの使用」を参照)、( vim docs など)の16進エディターを使用できます。 = /// =)bvi(---)。

いずれにせよ、クラスファイルを読み取るにはバイナリクラスファイル形式を理解する必要があるため、クラスファイルの内容を直接表示することはほとんど役に立ちません。

JAR内でファイルを開こうとしている理由を説明してください。それなら多分私達は助けることができます。

4
sleske

これが私がフォーマットの問題を解決した方法です。

最初にemacsをインストールします

 yum install emacs

次に、以下のコマンドを使用してコンテンツを読み取ります

emacs somejar.jar

コンテンツを選択してEnterを押します

保存してエディターを終了するには、C-x C-s(Ctrl + x、続いてCtrl + s)を押します。

出典: LinuxでEmacsエディターを使用する方法

0
John Joe