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


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

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

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

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

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

  • 相关阅读:
    日程管理系统找Bug
    #单元测试
    读后感
    四则运算
    事后诸葛亮会议
    数据流图和数据流程图
    时序图
    ER图
    uml用例图
    第一迭代感想
  • 原文地址:https://www.cnblogs.com/onlywujun/p/3552072.html
Copyright © 2020-2023  润新知