web项目调用批处理重启tomcat失败

  最近接到一个需求,需要在一个web项目中控制另一个tomcat的启动与停止,刚开始用   Runtime.getRuntime().exec();  调用,

  然而发现当本项目在eclipse中运行时,调用成功,但将项目打包,发布到服务器上时就会失败.报错信息为 此时不应有2048""

  推测为环境变量冲突导致.

  查看Runtime.getRuntime().exec()的底层,发现调用的还是ProcessBuilder进行脚本的启动.

  而ProcessBuilder.environment()方法可以返回当前的环境变量,将eclipse中的环境变量和打包后运行的环境变量进行比较后发现,打包后的多了以CATALINA开头的几个环境变量

  原因应该是打包后,用tomcat脚本启动时,会把几个变量加为环境变量,调用别的tomcat脚本时,两个变量冲突,导致不能调用成功.

  因此调整调用脚本的方法,在new ProcessBuilder之后,先获取ProcessBuilder.environment(),再遍历得到的map,当map的key以CATALINA开头时,就从map中删掉该环境变量,之后再调用脚本.bug解决.

猜你喜欢

转载自www.cnblogs.com/wangzeyang/p/11060503.html