關(guān)于jar包增量更新分析
jar包增量更新分析
jdk自帶工具jdeps,可分析class依賴關(guān)系(依賴的其它類和jar)。
團(tuán)隊(duì),可以在此工具結(jié)果的基礎(chǔ)上再詳細(xì)分析對(duì)比出增量文件;
思路如下:
- jdeps分別分析出舊包和新包的文件依賴關(guān)系。并對(duì)比出新增的文件列表、刪除的文件列表,分別加入到待更新的文件列表
- 分析出依賴關(guān)系沒變化的文件列表,分別計(jì)算這些文件在舊包和新包的md5值。如果md5值不同,則表示文件有變化,也加入到待更新的文件列表
jdeps使用舉例:(分析UserController.class)
# -cp指定classpath。多個(gè)classpath之間用“:”分割 # -f 過濾掉jdk文件 # -v 輸出詳細(xì)信息 jdeps -cp ".:../lib/*" -f java.* -v com/ruoyi/project/system/user/controller/UserController.class
輸出結(jié)果:
com.ruoyi.project.system.user.controller.UserController -> cn.hutool.extra.spring.SpringUtil hutool-all-5.8.3.jar
com.ruoyi.project.system.user.controller.UserController -> com.ruoyi.common.constant.Constants .
com.ruoyi.project.system.user.controller.UserController -> com.ruoyi.common.constant.Constants$Command .
com.ruoyi.project.system.user.controller.UserController -> com.ruoyi.common.constant.Constants$ProvinceCode .
com.ruoyi.project.system.user.controller.UserController -> com.ruoyi.common.constant.Constants$ProvinceCode$Telecom10010 .
com.ruoyi.project.system.user.controller.UserController -> com.ruoyi.common.exception.BusinessException .
com.ruoyi.project.system.user.controller.UserController -> com.ruoyi.common.utils.Encryption .
com.ruoyi.project.system.user.controller.UserController -> com.ruoyi.common.utils.RSACoder .
com.ruoyi.project.system.user.controller.UserController -> com.ruoyi.common.utils.StringUtils .
com.ruoyi.project.system.user.controller.UserController -> com.ruoyi.common.utils.poi.ExcelUtil .
com.ruoyi.project.system.user.controller.UserController -> com.ruoyi.common.utils.security.ShiroUtils .
com.ruoyi.project.system.user.controller.UserController -> com.ruoyi.framework.aspectj.lang.annotation.Log .
com.ruoyi.project.system.user.controller.UserController -> com.ruoyi.framework.web.controller.BaseController .
com.ruoyi.project.system.user.controller.UserController -> com.ruoyi.framework.web.domain.AjaxResult .
com.ruoyi.project.system.user.controller.UserController -> com.ruoyi.framework.web.domain.BaseEntity .
com.ruoyi.project.system.user.controller.UserController -> com.ruoyi.framework.web.page.TableDataInfo .
com.ruoyi.project.system.user.controller.UserController -> com.ruoyi.project.bizmanage.order.service.IUserPropertyService .
com.ruoyi.project.system.user.controller.UserController -> com.ruoyi.project.system.dept.domain.Dept .
com.ruoyi.project.system.user.controller.UserController -> com.ruoyi.project.system.dept.service.IDeptService .
com.ruoyi.project.system.user.controller.UserController -> com.ruoyi.project.system.post.service.IPostService .
com.ruoyi.project.system.user.controller.UserController -> com.ruoyi.project.system.role.domain.Role .
com.ruoyi.project.system.user.controller.UserController -> com.ruoyi.project.system.role.service.IRoleService .
com.ruoyi.project.system.user.controller.UserController -> com.ruoyi.project.system.user.domain.User .
com.ruoyi.project.system.user.controller.UserController -> com.ruoyi.project.system.user.domain.vo.EditableAttribute .
com.ruoyi.project.system.user.controller.UserController -> com.ruoyi.project.system.user.service.EditableAttributeListConfig .
com.ruoyi.project.system.user.controller.UserController -> com.ruoyi.project.system.user.service.IUserService .
com.ruoyi.project.system.user.controller.UserController -> org.apache.shiro.authz.annotation.RequiresPermissions shiro-core-1.12.0.jar
com.ruoyi.project.system.user.controller.UserController -> org.hibernate.validator.internal.constraintvalidators.bv.EmailValidator hibernate-validator-6.2.5.Final.jar
com.ruoyi.project.system.user.controller.UserController -> org.slf4j.Logger slf4j-api-1.7.36.jar
com.ruoyi.project.system.user.controller.UserController -> org.slf4j.LoggerFactory slf4j-api-1.7.36.jar
com.ruoyi.project.system.user.controller.UserController -> org.springframework.beans.factory.annotation.Autowired spring-beans-5.3.27.jar
com.ruoyi.project.system.user.controller.UserController -> org.springframework.beans.factory.annotation.Value spring-beans-5.3.27.jar
com.ruoyi.project.system.user.controller.UserController -> org.springframework.stereotype.Controller spring-context-5.3.27.jar
com.ruoyi.project.system.user.controller.UserController -> org.springframework.ui.ModelMap spring-context-5.3.27.jar
com.ruoyi.project.system.user.controller.UserController -> org.springframework.util.CollectionUtils spring-core-5.3.27.jar
com.ruoyi.project.system.user.controller.UserController -> org.springframework.web.bind.annotation.GetMapping spring-web-5.3.27.jar
com.ruoyi.project.system.user.controller.UserController -> org.springframework.web.bind.annotation.PathVariable spring-web-5.3.27.jar
com.ruoyi.project.system.user.controller.UserController -> org.springframework.web.bind.annotation.PostMapping spring-web-5.3.27.jar
com.ruoyi.project.system.user.controller.UserController -> org.springframework.web.bind.annotation.RequestMapping spring-web-5.3.27.jar
com.ruoyi.project.system.user.controller.UserController -> org.springframework.web.bind.annotation.ResponseBody spring-web-5.3.27.jar
com.ruoyi.project.system.user.controller.UserController -> org.springframework.web.multipart.MultipartFile spring-web-5.3.27.jar
增量更新jar包,報(bào)錯(cuò)問題(It has been compressed and nested jar files must be stored without compression)
報(bào)錯(cuò)信息
我們?cè)谠隽扛耲ar時(shí),有新增的依賴包。
重新打包之后,報(bào)錯(cuò):
It has been compressed and nested jar files must be stored without compression.Please check the mechanism userd to create your executable jar file.
報(bào)錯(cuò)原因
這個(gè)報(bào)錯(cuò)的大致意思是:
它已經(jīng)被壓縮,嵌套的jar文件必須在沒有壓縮的情況下存儲(chǔ)。請(qǐng)檢查用于創(chuàng)建可執(zhí)行jar文件的機(jī)制。
使用winrar或者7zip解壓工具,點(diǎn)開后修改lib內(nèi)的jar包,修改后重新保存的時(shí)候,對(duì)lib內(nèi)的jar包進(jìn)行了重復(fù)壓縮,所以訪問不到。
解決方式
Windows環(huán)境下:
- 添加壓縮包的時(shí)候,算法選擇"存儲(chǔ)"即可。
Linux環(huán)境下:
- jar -xvf jarname.jar(解壓)
- jar -cvf0M jarname.jar .(重新壓縮,-0是主要的)
jar命令:
- -c:create,插件檔案;
- -i:generate-index,為指定的jar檔案創(chuàng)建索引信息;
- -t:list,列出檔案的目錄;
- -u:update,更新檔案信息;
- -x:extract,從檔案中提取指定的 (或全部) 文件;
- -0:no-compress,僅存儲(chǔ),不使用zip壓縮;
- -v:verbose,在標(biāo)準(zhǔn)輸出中生成詳細(xì)輸出;
- -f:file,檔指定檔案文件名;
- -M:不創(chuàng)建條目的清單文件
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java實(shí)戰(zhàn)之貪吃蛇小游戲(源碼+注釋)
這篇文章主要介紹了Java實(shí)戰(zhàn)之貪吃蛇小游戲(源碼+注釋),文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)java的小伙伴們有非常好的幫助,需要的朋友可以參考下2021-04-04java實(shí)現(xiàn)ATM取款項(xiàng)目
這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)ATM取款項(xiàng)目的實(shí)現(xiàn)代碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-06-06詳解Spring Boot應(yīng)用的啟動(dòng)和停止(start啟動(dòng))
這篇文章主要介紹了詳解Spring Boot應(yīng)用的啟動(dòng)和停止(start啟動(dòng)),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-12-12Java Comparable及Comparator接口區(qū)別詳解
這篇文章主要介紹了Java Comparable及Comparator接口區(qū)別詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-07-07Springboot實(shí)現(xiàn)Excel批量導(dǎo)入數(shù)據(jù)并保存到本地
這篇文章主要為大家詳細(xì)介紹了Springboot實(shí)現(xiàn)Excel批量導(dǎo)入數(shù)據(jù)并將文件保存到本地效果的方法,文中的示例代講解詳細(xì),需要的可以參考一下2022-09-09java實(shí)現(xiàn)KFC點(diǎn)餐系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)KFC點(diǎn)餐系統(tǒng),模擬肯德基快餐店的收銀系統(tǒng),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-01-01JVM 的 noverify 啟動(dòng)參數(shù)問題解析
這篇文章主要介紹了JVM 的 noverify 啟動(dòng)參數(shù)問題解析,從 JDK 13 開始及其后續(xù)版本中,不建議繼續(xù)使用?-Xverify:none?和-noverify?參數(shù),本文給大家介紹的非常詳細(xì),需要的朋友可以參考下2023-05-05