• 启动tomcat时 一闪而过解决方法


    博文【搬砖】:https://www.cnblogs.com/zzmb/p/8258364.html

    【前文】

    在实际开发中一般都是eclipse+tomcat(也许还会用到tomcat的插件),我们只需要在eclipse中单击servers上的按钮就可以成功启动tomcat了,

    但是如果想在tomcat的安装目录下 双击startup.bat启动时却一闪而过了。这是为什么呢(tomcat启动失败),马上就带大家看看具体的原因。

    工具/原料

     
    • Tomcat

    • 记事本

    方法/步骤

     
    1.  

      下面我先跟大家确认一下问题出现的前提条件(本机版本java:1.6.20,tomcat:6.0.32)

      1)在eclipse里面启动tomcat时都是正常的。

      2)在系统中配置了各种环境变量如下:

      JAVA_HOME:H:DevelopToolsJavajdk1.6.0_20

      CATALINA_BASE:H:DevelopToolsapache-tomcat-6.0.32

      CATALINA_HOME:H:DevelopToolsapache-tomcat-6.0.32

      CLASSPATH:.;%JAVA_HOME%;%JAVA_HOME%jrelib;

      PATH:.;%JAVA_HOME%in;%CATALINA_HOME%in;

       

      2、我们来具体来分析一下问题出现的原因及解决办法:

      进入tomcat的安装目录(即解压后放置的地方):

      看到圈出红色的3个bat文件,一般通过startup.bat启动tomcat时流程是:startup->catalina->setclasspath->catalina

      如果这3个bat文件里面有一个出现错误的话就是启动失败。为了找到一闪而过的原因得需要我们来看看这3个文件里面到底是什么了

       

      3、先记事本打开startup.bat,找到最后一句话::end,我们知道end表示结束的意思,:end是一个标记,我们在后面加上一句pause (暂停等待的意思);

      再次执行startup.bat,就会看到如图,当我们按任意的键时cmd窗口又是一闪而过了。但是这已经确定了我们的环境变量都是正确的

       

       

       

      4、为了更加详细的看到信息,我们再来更改一句:找到call "%EXECUTABLE%" start %CMD_LINE_ARGS% 把里面的start替换为run。

      再来看看cmd窗口里面输出错误信息了:

      error occurred during initialization of vm

      could not reserve enough space for object heap

      could not create the java virtual machine

      我们大体可以理解为:因为程序初始化时请求不到足够的内存,导致vm程序退出。

       

       

      那么既然找到了问题的原因,我们可以来解决这个问题了:申请足够的内存就可以了 

      如下操作:在catalina.bat中 找到Execute The Requested Command下面的

      set JAVA_OPTS把这一句替换为:

      set JAVA_OPTS= -server -Xms800m -Xmx800m -XX:MaxNewSize=256m

      关于set JAVA_OPTS这句话其实有很多种替换的方式,但是大体上都是一样的

      再次启动startup.bat 会看到 我们期待已久的画面啦。

      启动成功啦!

       

      1. 【后文】
      1. 通过前面的3篇对Tomcat中startup.bat、catalina.bat、setclasspath.bat文件的解读,

        大家应该对它们有了大体的了解啦,遇到具体的问题我们就可以对症下药了。

      2.  

        我总结一下tomcat经常遇到的几个问题:

        1)The JAVA_HOME environment variable is not defined This environment variable is needed to run this program

        分析原因:没有在tomcat的配置文件中设置环境变量JAVA_HOME

        解决方法:

          JAVA_HOME=H:DevelopToolsJavajdk1.6.0_20(具体值要以实际的jdk安装路径为准)

          CLASSPATH=.;%JAVA_HOME%;%JAVA_HOME%jrelib;

        或者明确的定义JAVA_HOME环境变量

         在setclasspath.bat中开始位置加入以下俩句话:

         set JAVA_HOME=H:DevelopToolsJavajdk1.6.0_20

         set JRE_HOME=H:DevelopToolsJavajdk1.6.0_20(具体值要以实际的jdk安装路径为准)

      3.  

        2) The JAVA_HOME environment variable is not defined correctly  This environment variable is needed to run this program NB: JAVA_HOME should point to a JDK not a JRE

        分析原因:环境变量JAVA_HOME的设置中应该指定jdk的路径,不是jre的路径

        解决方法:

          JAVA_HOME=H:DevelopToolsJavajdk1.6.0_20(这里是JDK的安装后路径)

      4.  

        3)error occurred during initialization of vm could not reserve enough space for object heap could not create the java virtual machine

        分析原因:因为程序初始化时请求不到足够的内存,导致vm程序退出

        解决方法:

        设置tomcat的应用内存,在catalina.bat中 找到Execute The Requested Command下面的set JAVA_OPTS把这一句替换为 set JAVA_OPTS=  -Xms800m -Xmx800m

        或者 set JAVA_OPTS= -server -Xms800m -Xmx800m -XX:MaxNewSize=256m 

        说明: - Xms为tomcat启动初始内存 - Xmx为tomcat最大占用内存,以上两个参数关系到tomcat承受的访问性能,但也要根据服务器实际内存情况设定。

        其他问题不再罗列了,以后遇到后可以自己动手解决了

       
  • 相关阅读:
    支付业务的数据库表的设计
    数据库设计的一些参考(来源网上的一些帖子,仅供作者本人参考)
    Delphi 10.2的 更新说明,所有官方资料:新特征和Bugfix列表,所有工具开发说明
    日本太笨了,以小目标发动大战争,而且偷袭时候如小贼入室,一旦得手就仓皇逃窜
    理论经典:TCP协议的3次握手与4次挥手过程详解
    C++没有库则寸步难行,有库则几乎可以做任何事情——Bjarne Stroustrupi
    Ruby已经慢慢走向衰退了,那些年代久远而且小众的语言没有翻身的可能性
    前端面试题精选
    Spring MVC 基础
    NET WEB
  • 原文地址:https://www.cnblogs.com/zl520/p/12902651.html
Copyright © 2020-2023  润新知