关于jar包增量更新分析
jar包增量更新分析
jdk自带工具jdeps,可分析class依赖关系(依赖的其它类和jar)。
团队,可以在此工具结果的基础上再详细分析对比出增量文件;
思路如下:
- jdeps分别分析出旧包和新包的文件依赖关系。并对比出新增的文件列表、删除的文件列表,分别加入到待更新的文件列表
- 分析出依赖关系没变化的文件列表,分别计算这些文件在旧包和新包的md5值。如果md5值不同,则表示文件有变化,也加入到待更新的文件列表
jdeps使用举例:(分析UserController.class)
# -cp指定classpath。多个classpath之间用“:”分割 # -f 过滤掉jdk文件 # -v 输出详细信息 jdeps -cp ".:../lib/*" -f java.* -v com/ruoyi/project/system/user/controller/UserController.class
输出结果:
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包,报错问题(It has been compressed and nested jar files must be stored without compression)
报错信息
我们在增量更新jar时,有新增的依赖包。
重新打包之后,报错:
It has been compressed and nested jar files must be stored without compression.Please check the mechanism userd to create your executable jar file.
报错原因
这个报错的大致意思是:
它已经被压缩,嵌套的jar文件必须在没有压缩的情况下存储。请检查用于创建可执行jar文件的机制。
使用winrar或者7zip解压工具,点开后修改lib内的jar包,修改后重新保存的时候,对lib内的jar包进行了重复压缩,所以访问不到。
解决方式
Windows环境下:
- 添加压缩包的时候,算法选择"存储"即可。
Linux环境下:
- jar -xvf jarname.jar(解压)
- jar -cvf0M jarname.jar .(重新压缩,-0是主要的)
jar命令:
- -c:create,插件档案;
- -i:generate-index,为指定的jar档案创建索引信息;
- -t:list,列出档案的目录;
- -u:update,更新档案信息;
- -x:extract,从档案中提取指定的 (或全部) 文件;
- -0:no-compress,仅存储,不使用zip压缩;
- -v:verbose,在标准输出中生成详细输出;
- -f:file,档指定档案文件名;
- -M:不创建条目的清单文件
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
java List.of()与Arrays.asList()方法对比分析
这篇文章主要为大家介绍了java List.of()与Arrays.asList()方法对比分析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪2023-11-11启用Spring事务管理@EnableTransactionManagement示例解析
这篇文章主要为大家介绍了启用Spring事务管理@EnableTransactionManagement示例解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪2023-09-09spring boot RestTemplate 发送get请求的踩坑及解决
这篇文章主要介绍了spring boot RestTemplate 发送get请求的踩坑及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2021-08-08Kotlin + Spring Boot 请求参数验证的代码实例
本篇文章主要介绍了Kotlin + Spring Boot 请求参数验证的代码实例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下2017-07-07
最新评论