jar包在linux下不产生报错日志也无法启动的悬案
# jar包在linux下不产生报错日志也无法启动
昨天晚上,我很苦恼,遇到了一个奇怪的bug。是这样的:我完成了自定义了logback日志输出到定制化的表中的功能部分,运行啥的都很正常,我就想打个jar包放到服务器中给前端进行访问swagger看新的文档。但是,在我打完准备在linux运行的时候,悬案发生了。java -jar 我的jar包,==居然啥反应都没有==。lsof -i :查看端口也找不到正在运行的迹象。很显然:我的jar包没运行起来。
没有运行也没有报错,奇怪我明明在windows环境下跑得好好的呀?
寻找解决办法
1.首先,这个问题明显是==在win下能跑,但是在linux下跑不了==,于是我就开始搜索有关的内容。
解决尝试:
- linux下大小写敏感,我检查了配置文件的硬编码和文件路径,也没发现有什么大小写问题
2.其次,这个日志没有正常输出,问题可以锁定在日志上面。
解决尝试:
- 我重点查看了日志的配置,没毛病,在win下运行的好好的
3.问题在日志框架是没跑了,我猜会不会是日志有关的依赖冲突导致的问题呢?
- 果然,我在我的pom.xml中看到了我不小心多导入的日志依赖。马上删除,重新导入包。打包运行。好,也不是这个问题。
4.由于,一点日志都没给我打印,我真的是一点办法都没有。我就在想服务器环境肯定和本机环境不一样,要不我试一下远程调试?
- 这里附上我远程调试的jvm参数,在idea中进行我的远程调试。但是,我断点就算设置在springboot的启动类上面也没有用,没步入方法。失败++
1 | -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=2000 |
5.这里我差不多绝望了,把日志框架移除,重新打了一个jar包运行在服务器给前端看,运行没啥问题。突然第二天,下午,我想到:会不会是我win上的网络是局域网可以访问那个数据库,但是服务器网络不行。==而且打印不出日志的现象和日志框架连接不上数据库的现象十分相似==
- 我把自己的服务器地址填了上去,不用公家的了,好了。尼玛,真是这个问题。
总结
- 下次项目运行遇到问题可以考虑一下网络条件
- 日志框架的问题,我用的logback,连接不上也不报错有点ex
大家应该不会遇到这种问题吧,我也是凑了巧遇上,真的头疼!