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的启动类上面也没有用,没步入方法。失败++
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=2000

5.这里我差不多绝望了,把日志框架移除,重新打了一个jar包运行在服务器给前端看,运行没啥问题。突然第二天,下午,我想到:会不会是我win上的网络是局域网可以访问那个数据库,但是服务器网络不行。而且打印不出日志的现象和日志框架连接不上数据库的现象十分相似

  • 我把自己的服务器地址填了上去,不用公家的了,好了。尼玛,真是这个问题。
  • 下次项目运行遇到问题可以考虑一下网络条件
  • 日志框架的问题,我用的logback,连接不上也不报错有点ex

大家应该不会遇到这种问题吧,我也是凑了巧遇上,真的头疼!

在工作有这样的需求:需要使用web页面展示项目组所有的测试环境的服务信息和状态,并且根据状态进行启动或停止。 后台的java实现是用ssh连接远端的服务器,ChannelExec 执行linux command. 但是实际操作发现启动jar包的命令 :nohup java -jar /xxx.jar 执行后远端机器没有反应,参考资料加了重定向也不行。 后面尝试发现,其实是没有权限获取远端机器的环境变量,无法执行java命令,和nohup没有关系。 解决办法是 nohup /java的安装目录/bin/j
有一个springboot项目,放在测试服务器跑,但是隔一段时间,就会GG,要搞清楚怎么回事。 其实这就是SpringBoot项目运行一段时间停止运行java -jar项目运行一段时间停止、java程序运行一段时间自动关闭的问题了。 用java -jar xxx-service-0.0.1-SNAPSHOT.jar >xxxx.log& 原来项目启动...
问题描述: 暑假期间在个人服务器上部署springcloud项目。出现了服务莫名其妙会挂掉一两个的问题,重新启动挂掉的服务之后又会出现其他服务挂掉的情况,查看启动日志也并没有发现有异常抛出。令人费解的是所有的服务都是通过nohup java -jar xxx.jar &启动的,理论上不会随随便便挂掉。 一开始我猜测,是GC回收,导致服务挂掉。但并不是这么回事,GC虽然有STW现象,但是...
今天在自己搭建的集群部署项目时遇到的问题,明明用nohup java -jar启动jar包,但还是会挂掉。直接看nohup.out日志信息,发现是端口被占用了,我淦。 lsof -i:8080查看是哪个进程占用,kill掉,重新启动就OK了。 记录一下。也提醒自己以后遇到问题的第一时间不要直接急着就搜索引擎,还是应该先看看日志信息,定位好问题。
Linux启动jar包,这是一个非常基础的技能。但是涉及的环节也比较多,也容易出错。一路踩坑过来,jar包无法正确启动,原因主要是集在三个方面: 1.Java环境问题 如何解决已经在上一篇文章里写的很详细了。 2.代码配置问题 3.Linux权限问题 主要是谈谈第二点和第三点怎么解决 对于代码配置问题,首先要认识到开发环境和正式环境是有区别的,开发环...