zoukankan      html  css  js  c++  java
  • 运行环境不一致导致出错的一点启发

      今天要把开发的项目导出来拿到客户那边去部署运行一下。我们平时开发环境用的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的项目文件夹路径是没有中文没有空格的,所以运行起来就没有问题,所以才出了上面的出了问题不晓得哪里着手的尴尬局面。

  • 相关阅读:
    链式前向星啊
    并 查 集 ! ! !
    看似很水的题--找画笔
    tarjan
    动态内存分配
    C++ 基础中的基础 ---- 引用
    STL 补档
    错题笔记和易错点提醒
    题解 P2253 【好一个一中腰鼓!】
    PAT-A1003
  • 原文地址:https://www.cnblogs.com/onlywujun/p/3552072.html
Copyright © 2011-2022 走看看