跟公司一个外部支援同事合作开发,发包版本在他那里,功能开发工作我来做,可能是因为我是后来加入的,他不想把代码交到公司来,每次要发布新版本急于测试,联系他发包一直不回复消息,打电话也不接,等他开发他总也跟不上发布节奏,然后领导就让我自己打包~~~
问题来了:他给我的代码版本比他打包发布的落后很多,功能无法支持原版本。怎么办呢?
一、就用我手上的代码版本发包测试,遇到问题挨个改,测试周期也会很长(暂不实施)。
二、用他发布的最后一个版本包,替换掉部分文件,重新打包部署(自我感觉此方法最靠谱):
1、从服务器(windows环境)上下载部署包:
Xshell登录服务器,进入部署包所在路径:
#sz xx.jar ---xx.jar是部署包的包名
将目标压缩包保存至指定路径。
2、用winRAR解压成A目录;
3、用本地代码编译出新的jar包并解压成B目录;
4、将修改过的类编译后的文件在B目录中找到,并在A目录中替换;
5、在A目录中,打开命令窗口,用命令重新压缩成jar,压缩命令:
jar cvf0M xyz.jar .
注意:命令最后的点‘.’要保留!!!!!
将重新压缩后的jar包拖拽至服务器指定路径,直接运行,OK,好使!!!
遇到的问题:
1、从服务器下载下来的jar解压后内部引用的还有项目模块jar,需要同样的解压-替换-重新打包;
2、通过winRAR添加至压缩包
按照网上说的此种方法尝试后,打的jar包部署运行报错:Exception in thread "main" java.lang.IllegalStateException: Failed to get nested archive for entry BOOT-INF/lib/XXXX.jar
经查,说是将内部引用jar再次打包的原因导致的,几经周折找到以上可部署运行方案。
3、可部署运行方案在执行压缩命令时提示:‘无法将“jar”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写’
-然后继续百度,验证自己的环境变量:java 可行,javac 不可行,经查是自己的环境变量没有配置‘java_home’,配置全了环境变量再次执行压缩打包命令就可以用了,虽然没有完全解决问题还有点小麻烦,至少让自己可以不再依靠别人来发版本了~~~~