使用JAR API打包

2021-09-30 07:48:56 字數 709 閱讀 3657

前一篇文章有講jar的解析。流程很簡單,建立jar檔案,用這個檔案構建jarfile,然後,從jarfile中得到jarentry的列舉,這樣,就可以遍歷jarentry,而得到位元組流的方法也很簡答,jarfile提供了根據jarentry獲取位元組流的方法。

jarentry列舉時,會將jarfile中所有的檔案列出來,其路徑為相對路徑。例如:com/huayu/mtk/gpio.class

打包的過程是逆向的;jaroutputstream提供了putnextentry、closeentry、write方法。

entry的名稱,很顯然,是相對路徑名。不可能是絕對路徑名,也不可能是檔名(否則,jar怎麼知道你要寫在**!)

生成jar檔案時,是不需要構建jarfile的(jarfile沒有提供相關的api)。直接構建fileoutputstream和jaroutputstream就夠了。

疑問在於:我需要為每個檔案建立乙個entry,還是需要為每乙個目錄和檔案建立乙個entry。

經過測試,jar採用的是在生成jar檔案時為每個目錄和檔案建立乙個entry的方式;這就有點像我們在建立檔案時,如果這個檔案所在的目錄不存在,就需要先建立目錄一樣。當然,jar如果採用另一種方式,我認為也是合理的。

在網上拷貝了一段**,原來的**有乙個bug,改了 一下,測試ok;

另外,發現我生成的jar比eclipseme生成的jar檔案大1k左右位元組。但是,都可以用。原因尚不確定。

pyinstaller打包使用

pyinstaller manage.py 如果直接打包報錯,使用如下命令可以直接生成配置檔案 pyi makespec d manage.py生成的配置檔案格式如下 mode python coding utf 8 block cipher none a analysis impala etl.p...

如何使用eclipse打包

作為乙個小白,經常使用eclipse開發,想引入什麼依賴直接用buildpath也能實現。每天使用eclipse開發除錯已經成為習慣,需要什麼jar包的時候只需要configure build path引入乙個即刻輕鬆搞定,但突然有一天當我需要打乙個jar包的時候我卻發現自己還不會。當時的情況是醬紫...

使用setuptools打包python專案

使用setuptools打包python scrapy程式 0 目標 開發機上 ubuntu14.04 有乙個bloomfilter演算法的簡單實現,使用setuptools對其進行打包發布。1 安裝setuptools sudo apt get install python setuptools ...