zoukankan      html  css  js  c++  java
  • 关于tomcat不能启动的问题(NB:JAVA_HOME should point to a JDK not a JRE) (转发)

    今天在虚拟机上装tomcat6  启动时候遇到问题:命令窗口闪一下就消失  

    在cmd里面运行startup.bat 得到

    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

    首先检查环境:

    cmd里运行

    输入javacjava命令 正常  

    输入 if not exist "%JAVA_HOME%\bin\java.exe" echo "%JAVA_HOME%\bin\java.exe" 回车
    结果:"C:\Program Files\Java\bin\java.exe"  也并没有分号,说明环境配置正确
     
    那就应该是tomcat的问题,在网上查找了几种方式:
    一:在catalina.bat中的 
    set CURRENT_DIR=%cd%后加入一行 
    set JAVA_HOME=C:\Program Files\Java\jdk1.6.0_13(因人而异) 
    将你的当前JDK目录写死进去,运行成功,这样也省得你Tomcat自个儿去找了。这个方法其实很野蛮,但总比没办法好。 测试不成功
     
    二:在setclasspath.bat的头部定义了JAVA_HOME和JRE_HOME的值,那么在这里手动设置JAVA_HOME变量

    rem ---------------------------------------------------------------------------
    rem Set CLASSPATH and Java options
    rem
    rem $Id: setclasspath.bat 505241 2007-02-09 10:22:58Z jfclere $
    rem ---------------------------------------------------------------------------

    set JAVA_HOME=C:\Program Files\Java\jdk1.5.0_05
    set JRE_HOME=C:\Program Files\Java\jre1.5.0_05

    rem Make sure prerequisite environment variables are set
    if not "%JAVA_HOME%" == "" goto gotJdkHome
    if not "%JRE_HOME%" == "" goto gotJreHome
    echo Neither the JAVA_HOME nor the JRE_HOME environment variable is defined
    echo At least one of these environment variable is needed to run this program
    goto exit

    ......................................................................................................................................... 测试不成功

    三:解决我这个问题的方法:

    编辑startup.bat文件,在@echo off
    if "%OS%" == "Windows_NT" setlocal 后加一句:
    java -jar -Duser.dir="d:tomcat_6.0.14" "d:tomcat_6.0.14\bin\bootstrap.jar" start
    保存,运行startup.bat,搞定。这个方法貌似是最暴力的方法。。。直接指定你tomcat路径然后直接启动服务。。。  测试成功

     

    (网上搜到的)其他一些关于tomcat启动时的奇怪问题:
       a.Tomcat无法从"开始"中启动,但可以在startup.bat中启动
         JDK版本过低
       b.启动的时候,加载信息的提示界面在屏幕上停留几秒钟就消失了,同时,tomcat的应用程序也自动关闭
         在server.xml的最后,/host之上,应该写上的是:content
       c.TOMCAT启动时有一些显示,但仍会自动关闭,无法启动.
        可能是地址被占用,运行桌面上的"关闭TOMCAT"快捷方式,执行完毕后再启动TOMCAT.  
       d.TOMCAT启动时一闪而过,无法启动.
         可能是端口被占用,可找到TOMCAT的安装目录下的SERVER.XML文件,如..\EAM2003\conf\SERVER.XML,用记事本打开此文件,查找8080,如果找到,就将8080改为8088.
       e.TOMCAT能正常启动,可见到登录界面,但登录不进系统
       可能是IE的设置问题,将所有设置回复成默认设置,关闭"上网助手"或其他IE插件的"拦截弹出窗口"的功能.

    最后:

    解读startup.bat文件
    @echo off      //DOS在运行批处理时,会依次执行批处理中的每条命令,并且会在显示器上显示,如果你不想让它们显示,可以加一个“echo off”。当然,“echo off”也是命令,它本身也会显示,如果连这条也不显示,就在前面加个“@”。
    if "%OS%" == "Windows_NT" setlocal     //判断当前系统是否是window系统
    rem ---------------------------------------------------------------------------   //rem 是注释(下同)
    rem Start script for the CATALINA Server
    rem
    rem $Id: startup.bat 302918 2004-05-27 18:25:11Z yoavs $
    rem ---------------------------------------------------------------------------
     
    rem Guess CATALINA_HOME if not defined
    set CURRENT_DIR=%cd%           //设置当前目录
    if not "%CATALINA_HOME%" == "" goto gotHome //如果设置了CATALINA_HOME环境变量 ,就直接到下面的gotHome处
    set CATALINA_HOME=%CURRENT_DIR% //如果没有设置CATALINA_HOME,就设置CATALINA_HOME为当前目录(其实这里她假设你进入tomcat的安装目录)
    if exist "%CATALINA_HOME%\bin\catalina.bat" goto okHome//判断一下catalina.bat是否找到了,找到了就直接到下面的gotHome处
    cd .. //这里他是假设你开始已经进入到了tomcat的bin目录,所以就退到上一级目录
    set CATALINA_HOME=%cd%//现在再设置CATALINA_HOME为tomcat的安装目录
    cd %CURRENT_DIR% //这里是进入dos的当前目录
    :gotHome
    if exist "%CATALINA_HOME%\bin\catalina.bat" goto okHome   //再次判断catalina.bat是否找到了,找到了就直接到下面的okHome处,没有的话,就只能提示你啦!
    echo The CATALINA_HOME environment variable is not defined correctly
    echo This environment variable is needed to run this program
    goto end
    :okHome
     
    set EXECUTABLE=%CATALINA_HOME%\bin\catalina.bat   //设置要执行的文件
     
    rem Check that target executable exists
    if exist "%EXECUTABLE%" goto okExec //再次判断catalina.bat是否找到了,找到了就直接到下面的okExec处,没有的话,就提示。
    echo Cannot find %EXECUTABLE%
    echo This file is needed to run this program
    goto end
    :okExec
     
    rem Get remaining unshifted command line arguments and save them in the
    set CMD_LINE_ARGS= //这里是设置参数
    :setArgs
    if ""%1""=="""" goto doneSetArgs //判断参数是否加入完成
    set CMD_LINE_ARGS=%CMD_LINE_ARGS% %1 //将参数组成一行,接在后面
    shift
    goto setArgs
    :doneSetArgs
    call "%EXECUTABLE%" start %CMD_LINE_ARGS% //执行catalina.bat,最好将这行改为:echo "%EXECUTABLE%" start %CMD_LINE_ARGS%       以便阅读、理解本文件的作用

    源地址:http://www.cnblogs.com/hubingxu/archive/2012/10/11/2720173.html
  • 相关阅读:
    用SNMP协议实现系统信息监控--Windows Server 2008
    Apache与Tomcat区别联系
    Oracle数据库的创建与验证
    oracle监听服务开启
    【VS Code 开发工具】在VS Code中使用Markdown语法
    【SQLServer数据库】SQLServer分库分表
    【SQLServer数据库】SQLServer死锁与优化
    【SQLServer数据库】SQLServer悲观锁和乐观锁
    【HTTP】HTTP Body
    【SQLServer数据库】SQLServer视图
  • 原文地址:https://www.cnblogs.com/hqr9313/p/2783807.html
Copyright © 2011-2022 走看看