设想遇到这样一种情况: 你被派到一个网络环境封闭、只有shell访问的linux系统去修改代码,你的代码是以jar包形式运行的,
你要改的地方很少,就一行代码,你会怎么做?
现在程序员都使用Eclipse或IDEA等集成开发工具, 几乎已经忘了命令行如何编译、打包,虽然这个不是天天遇到,但遇到了
就是体现差距的地方了。
ok,针对上面的场景,我们创建一个实验环境。
实践过程
我们的环境下有一个jar包(关于这个jar包怎么来的,请参加下面# 关于源文件以及打包过程):
1 | $ ls |
查看下jar包内容:
1 | $ jar -tf Hello.jar |
要改文件,肯定得解压出来呀:
1 | $ jar -xvf Hello.jar |
1 | $ tree |
然后替换新的jar包即可。
关于源文件以及打包过程
目录结构:
1 | tree com/ |
源文件内容:
1 | $ cat com/jimo/Hello.java |
编译: -d
选项指定编译后文件存放目录
1 | mkdir target |
打包成jar包:
1 | 首先进入target目录 |
现在我们运行下jar包:发现报错了
1 | java -jar Hello.jar |
既然没有主清单文件,我们就创建一个,核心就是指定主类:
1 | cat manifest |
然后重新打包运行:
1 | jar cvfm Hello.jar manifest com |
看下最后的结构:
1 | $ tree |