🛫 问题
描述
之前为了快速启动多个微服务,写了个批处理,参考文章《
[pig框架实战] 手撕视频管理发布平台[03] - pig项目部署-服务器(myvideos)
https://blog.csdn.net/kinghzking/article/details/122032497》,里面启动nacos的脚本是这样写的
set PATH_CODE=J:\_ALL\CODE\gitee\constellations\pig\
cd /d %PATH_CODE%\pig-register\target\classes
git pull
start "Nacos-%date%-%time%" cmd /k java -Xms256m -Xmx512m -Dfile.encoding=utf-8 -jar ..\pig-register.jar
ping localhost -n 2
当时写的是切换到
pig-register\target\classes
目录,然后执行java -jar ..\pig-register.jar
。其实当时一开始写的是切换到pig-register\target
目录,然后执行java -jar .\pig-register.jar
,但是会报下面的错误。
这个问题找了很久,一直都没有找到答案,也是猜测和尝试了很久(一直以为是找不到配置文件
bootstrap.yml
),最后切换到了目录jar包所在目录的classes文件夹,然后再执行jar包,鬼使神差
的运行正常了。两个目录内容如下:
ps:
一年多的时间,不同电脑上搭了四五个项目,这个问题在有的电脑上并不会出现(直接执行java -jar .\pig-register.jar
也不会报错)。让我心中的❓越来越大,今天,一定消灭它!!!
1️⃣ jar包分析(失败)
之前说,可能是找不到
bootstrap.yml
导致报错,但是jar包中的确是有这个配置文件的,目录为BOOT-INF\classes\
。
比对正常和异常的jar包
将两个jar包中的
bootstrap.yml
放到BCompare中比较,发现两个文件一模一样,所以不是jar包的问题(以为电脑环境不一样导致打出来的jar包不一样)。
ps: 虽然没有解决问题,但是意外发现特殊配置
basedir
。
欲知后事如何,请看下文讲解。
2️⃣ basedir
错误信息中,有关键字
server.tomcat.basedir
,网上讲解的很少,但是上文中发现:配置文件中有该项的配置,值为logs
。
会不会是因为缺少这个文件夹导致的呢,新建一个试试。
再次运行
java -jar .\pig-register.jar
,不再报错了,撒花!!!
🛬 结论
在
pig-register.jar
所在目录中新建一个logs
文件夹,即可解决问题。
之前之所以切换到classes
目录能正常运行,是因为该目录中包含了logs
文件夹,巧合!!!
📖 参考资料
[pig框架实战] 手撕视频管理发布平台[03] - pig项目部署-服务器(myvideos)
https://blog.csdn.net/kinghzking/article/details/122032497