更新JAR文件时其他内容被误删的技术求助
问题原因与解决方法
核心原因
你执行命令时大概率犯了两个常见错误之一:
- 当前工作目录下不存在原66M的
test-SNAPSHOT.jar,jar命令自动创建了一个新的空JAR文件(大小约4K),而非更新原文件; - 本地待更新的
test-INF/classes/cert路径错误或文件不存在,导致jar命令错误生成了仅包含空结构的JAR。
解决步骤
1. 找回原JAR文件
检查你最初存放66M JAR的目录,原文件大概率没被删除——你当前目录下的4K文件是jar命令新创建的空文件。
2. 正确执行更新命令
确保满足两个前提:
- 原
test-SNAPSHOT.jar在当前工作目录,或你在命令中指定其完整路径; - 本地存在与JAR内部结构一致的
test-INF/classes/cert文件。
场景1:本地文件结构与JAR内部一致
如果你的本地目录结构如下:
当前目录/ ├─ test-SNAPSHOT.jar └─ test-INF/ └─ classes/ └─ cert
直接执行命令:
jar -uf test-SNAPSHOT.jar test-INF/classes/cert
场景2:本地文件在子目录中
如果cert文件存放在./src/test-INF/classes/cert,需要用-C参数切换到源文件的根目录,保证路径映射正确:
jar -uf test-SNAPSHOT.jar -C src test-INF/classes/cert
3. 验证结果
执行以下命令查看JAR内容,确认cert已更新且其他文件未丢失:
jar -tf test-SNAPSHOT.jar
预防措施
每次修改JAR前,先复制一份原文件做备份,避免误操作导致数据丢失。
内容的提问来源于stack exchange,提问作者Karthikeyan Suresh
相关产品推荐
相关产品推荐

