记录一下:
- Mac笔记本使用idea打包maven工程,
- 本地环境运行正常,打包成功,却启动不成功;
- window打包成功且启动正常;
- 查询启动错误日志是由于zookeeper null指针的问题,但是zookeeper启动且无问题,初步怀疑是由于循环依赖的问题,但是这个问题一直排查了很久,打断点,底层源码都没有很好的答案!
但是后来发现,mac 打包后用jar解压再重新打包即可正常启动!
现在记录一下写的一个shell脚本:
#!/usr/bin/env bash echo "===========================开始执行脚本===========================" # dirname $0,取得当前执行的脚本文件的父目录 basepath=$(cd `dirname $0`; pwd) # 打印当前路径 currentPath=$(pwd) echo "当前文件夹路径: $currentPath" # 设置变量 folder="$currentPath/tongdsp.manager-3.1.0/lib/" tongdsp="$currentPath/tongdsp.manager-3.1.0/" newFolder="$currentPath/tongdsp.manager-3.1.0/lib/temp/" oldFolder="$currentPath/tongdsp.manager-3.1.0/lib/tongdsp-environment-3.1.0.jar" # 设置权限 chmod +x run.sh echo "++++++++++++++++ 第一步:解压tongdsp.manager-3.1.0.tar.gz +++++++++++++++" cd $currentPath/ # 判断tongdsp.manager-3.1.0文件夹是否存在,存在则删除 if [ -d "$tongdsp" ]; then rm -rf "$tongdsp" fi tar -zxvf tongdsp.manager-3.1.0.tar.gz rm -f tongdsp.manager-3.1.0.tar.gz echo "++++++++++++++++ 第二步:新建temp文件夹,并复制tongdsp-environment-3.1.0.jar至temp文件夹 +++++++++++++++" cd "$folder" # 判断temp文件夹是否存在,不存在则创建 if [ ! -d "$newFolder" ]; then mkdir -p "$newFolder" fi # 判断tongdsp-environment-3.1.0.jar是否存在,存在则复制至temp if [ -f "$oldFolder" ]; then cp -r "$oldFolder" "$newFolder" fi # 判断tongdsp-environment-3.1.0.jar是否存在,存在则删除 if [ -d "$oldFolder" ]; then rm -f "$oldFolder" fi echo "++++++++++++++++ 第三步:对tongdsp-environment-3.1.0.jar解压操作,并更新至temp上一层目录 +++++++++++++++" cd "$newFolder" jar -xvf tongdsp-environment-3.1.0.jar rm -f tongdsp-environment-3.1.0.jar jar -cf tongdsp-environment-3.1.0.jar ./ cp -r tongdsp-environment-3.1.0.jar ../ echo "++++++++++++++++ 第四步:重新打包tongdsp.manager-3.1.0.tar.gz +++++++++++++++" cd ../ rm -rf "$newFolder" cd ../../ tar -zcvf tongdsp.manager-3.1.0.tar.gz tongdsp.manager-3.1.0 if [ -d "$tongdsp" ]; then rm -rf "$tongdsp" fi echo "===========================执行脚本成功==========================="