我知道你可以使用emacs瀏覽檔案的內容。有沒有辦法可以編輯這些文件並透明地寫入存檔?目前,我導航到存檔中,將文件寫入臨時目錄,然後使用java jar命令將文件重新添加到存檔中。它有點痛苦。你能用emacs編輯.jar/archive內容
P.S.我知道你很少想要這樣做的用例,但我繼承了一個平臺,我不能輕易修改我必須在短期內應對這個限制的地方。
我知道你可以使用emacs瀏覽檔案的內容。有沒有辦法可以編輯這些文件並透明地寫入存檔?目前,我導航到存檔中,將文件寫入臨時目錄,然後使用java jar命令將文件重新添加到存檔中。它有點痛苦。你能用emacs編輯.jar/archive內容
P.S.我知道你很少想要這樣做的用例,但我繼承了一個平臺,我不能輕易修改我必須在短期內應對這個限制的地方。
是的,它只是工作。你試過了嗎?
我抓住了一個jar文件,其中包含一個文本文件和一些將打印出來的java代碼。我編輯了.jar中的txt文件並保存了文本文件。它完全符合我的期望。
編輯 - 當保存歸檔請確保您使用C-X C-S
@ nsfyn55請注意,本例中的過程是在Emacs中打開封閉的jar文件,然後使用dired-like界面導航到單個文件。 – sanityinc 2011-04-19 07:44:55
@ sanity/Dustin我使用ubuntu 10.04的默認emacs 2.3版本,沒有窗口模式。當我打開jar /mydir/myjar.jar時,編輯文件(/mydir/myjar.jar:props.properties),並使用c-x c-w來寫它詢問我是否要寫入/ mydir /。如果我嘗試在那裏追加jar文件名,它想覆蓋jar – nsfyn55 2011-04-19 12:47:15
我相信你的意思是23,而不是2.3。你有權限問題或什麼?我只是在我的ubuntu(11.04)盒子上試過23.2.1,沒有問題。同樣在我的Mac上,無論他們運送什麼版本。 – Dustin 2011-04-19 19:48:15
在Emacs-23.2(不23.1或23.3),這並不 「只是工作」 在Windows上,由於一個錯誤。相反,它只是寫caution: filename not matched: "<internal path>
。
一個解決方案是簡單地升級到23.3。
要修正的emacs-23.2,開放$EMACS_HOME/lisp/arc-mode.el
和錯誤替換:
(if (equal (car archive-zip-extract) "unzip")
(shell-quote-argument name)
name)
有:
name
,並重新編譯:
M-x byte-compile-file $EMACS_HOME/lisp/arc-mode.el
這個答案來自於原來的emacs bug report。
如果您的計算機上安裝了zip命令,Emacs可以毫不費力地寫入jar文件。 – vpit3833 2011-04-18 23:40:30