Mac终端误执行jar命令致Book.java损坏,如何恢复?
恢复被误覆盖的Book.java文件
哥们,我太懂这种手滑的痛苦了——你把jar命令的参数搞反了,把Book.java当成了输出的JAR文件名,结果原来的Java源文件被替换成了JAR归档,导致内容全乱了。别慌,咱们一步步来解决:
先确认问题本质
首先执行这个命令,确认当前的Book.java确实是个伪装成Java文件的JAR包:
file Book.java
如果输出显示类似Book.java: Java archive (JAR),那咱们的判断就没错——原来的源文件已经被JAR归档覆盖了。
先救回其他没被覆盖的文件
虽然Book.java凉了,但你当时打包的Library.java、Patron.java和README都被塞进了这个伪装的JAR里,先把它们捞出来:
- 重命名文件,方便操作:
mv Book.java temp_backup.jar - 解压这个JAR包:
执行完后,你就能在当前目录拿到那三个文件的副本了。jar xf temp_backup.jar
重点:恢复原来的Book.java
这部分分两种情况,优先级从高到低:
情况1:你开启了Time Machine备份(最靠谱)
这是最简单的恢复方式:
- 打开Mac上的Time Machine应用
- 在Time Machine里导航到你的项目文件夹
- 找到被覆盖之前的
Book.java版本(可以用右侧的时间线滑块找) - 选中文件后点击“恢复”,就能把原来的源文件找回来
情况2:没有Time Machine备份
被覆盖的文件恢复难度比删除的大,但还有一丝希望:
- 编辑器本地历史记录:如果你用VS Code、IntelliJ这类编辑器写代码,它们大多会保存文件的本地历史。比如VS Code可以通过「文件 > 比较文件 > 本地历史记录」查看旧版本;IntelliJ右键点击文件,选择「本地历史 > 显示历史」就能找到之前的版本。
- 磁盘恢复工具:可以试试Disk Drill这类Mac磁盘恢复工具,免费版能扫描磁盘,看看是否能找到被覆盖前的
Book.java残留数据。不过这种方法成功率不保证,毕竟原文件的磁盘空间已经被新的JAR文件覆盖了一部分。
最后给你提个醒
以后用jar命令时,不妨先写好输出的JAR文件名,再加要打包的文件,比如:
jar cvf ex0.jar Book.java Library.java Patron.java README
这样就不会再手滑把源文件当成输出包了~
内容的提问来源于stack exchange,提问作者Fooad Taha
相关产品推荐
相关产品推荐

