运行环境不一致导致出错的一点启发

  今天要把开发的项目导出来拿到客户那边去部署运行一下。我们平时开发环境用的IDE是IntelliJ IDEA,智能化程度比较高。

  代码写好后,通过IDEA启动tomcat运行是完全没问题的,然后我关闭IDEA,把这个项目手动复制到tomcat的webapp目录下,再在tomcat的bin目录启动tomcat,问题却出来了,报错找不到一些启动的xml文件。

  一开始完全摸不着北,只是觉得很奇怪,叫来发开部经常部署的同事来看,也不知道怎么回事,他们只是在操作的时候强调说路径不能有中文。后来一点一点debug才发现,我们启动Class类里的代码里有查找当前路径字符串的代码,然后根据当前路径再加上一些固定规则去找那些启动需要的xml。而我的tomcat是放在:C:\Program Files路径下的,那么我那个启动Class的路径就在C:\Program Files\apache-tomcat-version\webapps\appName\WEB-INF\classes里了,结果获取到的字符串把空格转义了,成了C:\Program%20Files\apache-tomcat-version\webapps\appName\WEB-INF\classes,通过这个字符串就找不到xml了,所以导致报错。

  这是错误分析,这个错误本来是很简单的,但是为什么让我和这么多同事找不到北呢,因为我们平时开发用IDEA,里面配置的应用服务器和后来不用IDEA,手动启动的是同一个tomcat,这就导致一个心理上的恐惧,明明用的同一个,代码也是完全一样,为什么用IDEA没有问题,而直接用tomcat就出问题了呢,心里一下子就虚了,所以才导致被惧怕所累畏手畏脚,怀疑自己,怀疑是不是自己把tomcat配置弄错了,把时间花在tomcat的配置上。

  其实问题出在对IDEA调用tomcat的理解不清晰上,IDEA关联tomcat用的时候,不会把项目部署到tomcat,而是自己有一个项目文件夹路径,会让tomcat来主动调用并启动自己项目文件夹下的应用,而我们IDEA的项目文件夹路径是没有中文没有空格的,所以运行起来就没有问题,所以才出了上面的出了问题不晓得哪里着手的尴尬局面。

posted @ 2014-02-17 06:17  寂静沙滩  阅读(675)  评论(0编辑  收藏  举报