情景描述
本来是给一个客户安装我们公司的bs程序,以前也给其他公司安装过,问题都不大,这次客户因为在国外,使用向日葵进行远程操作,网络极度不稳地,超级卡,过程相当崩溃。不论是数据库的安装,bs的部署都遇到了好多问题。最诡异的当属bs的部署。
前期数据库的安装,以及仪器对应的服务程序都已经安装完毕,且已经能正常工作。后期因为客户需要数据接口,那么我就要安装bs程序,按照顺序,先将jdk安装,并配置好环境变量。然后tomcat(tomcat其实就是个绿色压缩包,其实也可以不需要配置环境变量的), 然后把bs程序需要调用的dll文件放入d盘中,并将路径添加到环境变量的path中。然后将我们的bs程序直接部署到webapps文件夹下,调试阶段,启动tomcat,命令窗口也正常启动,显示bs项目正常部署完成。
但是界面就卡在完成界面了,因为我们的项目启动后会自动与另外一个c++的的服务程序进行socket通信,正常情况下是会日志打印的,结果等了很久都没有日志信息,开始以为tomcat有问题,但是登录 localhost:8080 能够显示出tomcat的网页的。而且通过postman进行接口测试,有些接口又是可以用的。而且调用一个接口,就会打印相应的日志。
排错之旅
- 最开始以为是tomcat或者jdk环境变量出现问题,但反复检查,重新重装jdk,tomcat,更换tomcat版本,问题还是一样
- 后来,怀疑是程序问题,虽然程序在自己电脑上面能够运行,但这种情况还是不免怀疑。正常情况下为什么会打印消息,因为在tomcat服务器启动的时候,我设置了web.xml中启动后就需要实力servlet的
感觉好像这个servlet不能实例化一样,为了验证自己的猜想,就在init方法中加入日志,果然没有打印
-
我一度以为是tomcat没有实例化这个servlet,但是web.xml配置确实正确的。但tomcat又没显示错误信息。后来我一直查询,
没有成功的问题。但查了很多都不是。 -
后来我在想是不是环境有问题,因为客户是win10系统,我是win7系统。然后将自己的工作笔记本装成win10系统,然后按照给客户装的过程在自己电脑上面过一遍,装jdk,配置环境变量,装tomcat,复制dll,设置path,最后启动tomcat果然,一样的问题!!!!给了我希望~~~
-
这个时候我认为是win10系统的问题。然后又找了很多win10 系统tomcat卡住。结果都不是我这种情况。最后我干脆在我电脑上idea试着把程序跑起来,结果出现了错误信息了!!!!!!
好嘛,结果是因为我bs里面用了jni,生成的dll里面需要的libraries没有找到。这时候犯难了,少什么依赖呢。百度找到一款软件可以查看dll依赖 --dependencies, win7、8、10可使用,另一款depends win xp、7 、8可使用
绿色版,解压即用,点击DpendenciesGui.exe启动程序,将dll文件拖动到窗口里
结果显示缺少MSVCP100.dll文件。
那就下载吧,注意要下载64位的哦,然后将此文件放到path路径当中,我直接放到我们公司的dll文件夹下,因为path都配置好了。重启引用就ok了
日志窗口正常。
后面再逆向分析,其实就是servlet没有实例化成功。而没有实例化成功的原因,是因为在实例化的时候,执行静态代码块的时候出现问题了。只是当时我没有看到错误信息,不清楚问题出现在哪里
而且tomcat的logs文件夹下其实有问题记录的,只是我当时不知道,后面才知道的。如果当时知道这个问题记录,应该会节省很多时间
标签:tomcat,程序,dll,问题,bs,win10,上装 From: https://www.cnblogs.com/tanxin1989/p/16650416.html