精华内容
下载资源
问答
  • 一、错误来源 在非linux系统上(即外部)...Neither the JAVA_HOME nor the JRE_HOME environment variable is definedAt least one of these environment variable is needed to run this program 三、错误译文 J...

    一、错误来源

    在非linux系统上(即外部)启动tomcat时显示的错误

    二、报错原文

    Neither the JAVA_HOME nor the JRE_HOME environment variable is defined
    At least one of these environment variable is needed to run this program

    三、错误译文

    JAVA_HOME和JRE_HOME环境变量都没有定义
    运行这个程序至少需要这些环境变量中的一个

    四、错误思索

    我明明在/etc/profile这个文件里面添加了java和tomcat的环境变量啊,为什么还出错,而在服务器上启动tomcat就不报这个错误

    五、粗略分析错误原因

    在服务器上启动tomcat不报错是因为启动tomcat时区/etc/profile文件里面找到了java和tomcat的环境变量,所以顺利启动,而在外部启动tomcat时,tomcat程序首先调用startup.sh脚本文件,startup.sh又去调用catalina.sh这个脚本文件,而catalina.sh脚本文件又会去setclasspath.sh这个脚本文件里面寻找tomcat变量环境,这是因为setclasspath.sh文件就是tomcat变量环境脚本,这是因为这个脚本默认是没有在脚本开头申请java和jdk的变量环境刘静的,因此报错,setclasspath.sh的路径是:
    /usr/local/tomcat/bin/setclasspath.sh
    (因为我的tomcat是装在/usr/local路径下了,所以我的是这个,你们要按照你们的安装路径在查找)

    六、查看setclasspath.sh脚本文件,精确分析原因

    setclasspath.sh脚本原文以及中文解释如下:

    #!/bin/sh
    # Licensed to the Apache Software Foundation (ASF) under one or more
    # contributor license agreements.  See the NOTICE file distributed with
    # this work for additional information regarding copyright ownership.
    # The ASF licenses this file to You under the Apache License, Version 2.0
    # (the "License"); you may not use this file except in compliance with
    # the License.  You may obtain a copy of the License at
    #
    #     http://www.apache.org/licenses/LICENSE-2.0
    #
    # Unless required by applicable law or agreed to in writing, software
    # distributed under the License is distributed on an "AS IS" BASIS,
    # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    # See the License for the specific language governing permissions and
    # limitations under the License.
    # -----------------------------------------------------------------------------
    #  Set CLASSPATH and Java options
    #
    #  $Id: setclasspath.sh 795037 2009-07-17 10:52:16Z markt $
    # -----------------------------------------------------------------------------
    # Make sure prerequisite environment variables are set
    #因为setclasspath.sh脚本是被catalina.sh调用,所以可以继承catalina.sh中的变量申明
    if [ -z "$JAVA_HOME" -a -z "$JRE_HOME" ]; then
    #判断用户有没有提前做$JAVA_HOME和$JRE_HOME全局变量声明,如果都没进行申明
      # Bugzilla 37284 (reviewed).
      if $darwin; then
      #要理解这个判断,先看下startup.sh和shutdown.sh就会明白
      #这个是win仿真unix不用管下面两个语句
        if [ -d "/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home" ]; then
          export JAVA_HOME="/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home"
        fi
      else
      #其他环境没有申明,那么系统自己想办法找这两个变量的路径
        JAVA_PATH=`which java 2>/dev/null`
    #此语句可以把java命令位置找出来
        if [ "x$JAVA_PATH" != "x" ]; then
    #如果能找出java路径,则可以定位到java命令的路径,经过作者验证不是java的装路径
    #所以通过此处就可以看出,老鸟们为什么都要自己指定这两个变量了
          JAVA_PATH=`dirname $JAVA_PATH 2>/dev/null`
          JRE_HOME=`dirname $JAVA_PATH 2>/dev/null`
        fi
        if [ "x$JRE_HOME" = "x" ]; then
    #如果找不到java路径,那么就看有没有/usr/bin/java这个执行文件,有的话就它了,没有就算了
          # XXX: Should we try other locations?
          if [ -x /usr/bin/java ]; then
            JRE_HOME=/usr
          fi
        fi
      fi
    
      if [ -z "$JAVA_HOME" -a -z "$JRE_HOME" ]; then
      #再验证一边,有没有这两个变量,没有不好意思,我不执行了,退出
      #这个exit 1 不但是结束setclasspath.sh,会彻底退出catalina.sh脚本的
      #对于在脚本中引用脚本的童鞋们,就需要注意了,小心使用exit。 
        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"
        exit 1
      fi
    fi
    if [ -z "$JAVA_HOME" -a "$1" = "debug" ]; then
      echo "JAVA_HOME should point to a JDK in order to run in debug mode."
      exit 1
    fi
    if [ -z "$JRE_HOME" ]; then
      JRE_HOME="$JAVA_HOME"
    fi
    # If we're running under jdb, we need a full jdk.
    if [ "$1" = "debug" ] ; then
      if [ "$os400" = "true" ]; then
        if [ ! -x "$JAVA_HOME"/bin/java -o ! -x "$JAVA_HOME"/bin/javac ]; then
          echo "The JAVA_HOME environment variable is not defined correctly"
          echo "This environment variable is needed to run this program"
          echo "NB: JAVA_HOME should point to a JDK not a JRE"
          exit 1
        fi
      else
        if [ ! -x "$JAVA_HOME"/bin/java -o ! -x "$JAVA_HOME"/bin/jdb -o ! -x "$JAVA_HOME"/bin/javac ]; then
          echo "The JAVA_HOME environment variable is not defined correctly"
          echo "This environment variable is needed to run this program"
          echo "NB: JAVA_HOME should point to a JDK not a JRE"
          exit 1
        fi
      fi
    fi
    #上段的代码都是在确认$JAVA_HOME和$JRE_HOME变量的申明情况及后续的解决过程
    if [ -z "$BASEDIR" ]; then
    #对"$BASEDIR变量的检查,木有的话就退出
      echo "The BASEDIR environment variable is not defined"
      echo "This environment variable is needed to run this program"
      exit 1
    fi
    if [ ! -x "$BASEDIR"/bin/setclasspath.sh ]; then
    #确认"$BASEDIR"/bin/setclasspath.sh有木有,木有还是退出
      if $os400; then
        # -x will Only work on the os400 if the files are:
        # 1. owned by the user
        # 2. owned by the PRIMARY group of the user
        # this will not work if the user belongs in secondary groups
        eval
    #eval不清楚嘛意思
      else 
        echo "The BASEDIR environment variable is not defined correctly"
        echo "This environment variable is needed to run this program"
        exit 1
      fi
    fi
    # Don't override the endorsed dir if the user has set it previously
    #这个是确认JAVA_ENDORSED_DIRS的位置
    if [ -z "$JAVA_ENDORSED_DIRS" ]; then
      # Set the default -Djava.endorsed.dirs argument
      JAVA_ENDORSED_DIRS="$BASEDIR"/endorsed
    fi
    # OSX hack to CLASSPATH
    JIKESPATH=
    if [ `uname -s` = "Darwin" ]; then
      OSXHACK="/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Classes"
      if [ -d "$OSXHACK" ]; then
        for i in "$OSXHACK"/*.jar; do
          JIKESPATH="$JIKESPATH":"$i"
        done
      fi
    fi
    # Set standard commands for invoking Java.
    #这句是响当当的重要,确定了$_RUNJAVA的值
    _RUNJAVA="$JRE_HOME"/bin/java
    if [ "$os400" != "true" ]; then
      _RUNJDB="$JAVA_HOME"/bin/jdb
    fi

    说明:通过对这个脚本的分析,我们可以看到,这个脚本就做了一件事情,检查各种变量是否赋值,验证tomcat启动停止需要涉及到的文件,保障tomcat顺利启动停止。而我们报错就是因为它在全文搜索了半天结果一直找不到JRE_HOME和JAVA_HOME这两个变量到底在哪。

    七、解决方案
    在setclasspath.sh脚本文件的所有没有注释的行的开头加入截图中的两行即可:
    问题:启动tomcat报找不到JAVA_HOME或者JRE_HOME环境变量的问题
    最后重启tomcat就解决了问题。

    转载于:https://blog.51cto.com/zpf666/2336199

    展开全文
  • 最近在配置Tomcat上遇到startup.bat启动闪退,在网上找了很多方法,都没解决。后来在网上找到两种问题,更改了两次,解决了。现将我遇到的问题分享,希望对遇到同样问题有帮助。 1、很多初学者对jdk的配置不明确,...

    最近在配置Tomcat上遇到startup.bat启动闪退,在网上找了很多方法,都没解决。后来在网上找到两种问题,更改了两次,解决了。现将我遇到的问题分享,希望对遇到同样问题有帮助。

    1、很多初学者对jdk的配置不明确,不知道jdk与jre是做什么的,配置文件的时候,难免将jdk与jre配置混淆。

    建议卸载jdk后,在F盘新建jdk文件,在里面新建jdk、jre文件,便于区分。

            

    2、安装jdk,第一个路径:jdk路径(如果默认路径是自己建立的路径,则不需更改)

         

     

     

        第二个路径:jre路径(如果默认路径是自己建立的路径,则不需更改)

       

    2、配置环境变量

        注意:如果是重新安装jdk的情况,环境变量

    变量名:JAVA_HOME
    变量值:C:\Program Files (x86)\Java\jdk1.8.0_91      // 要根据自己的实际路径配置

    变量名:JRE_HOME
    变量值:F:\jdk1.8\jre       // *这步最重要*,,同样要根据自己的实际路径配置      

    变量名:CLASSPATH
    变量值:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar         //记得前面有个"."

    变量名:Path
    变量值:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin

    3、jdk配置好后,配置Tomcat

         第一个路径:jre路径(会给出默认路径)如果没有安装jre的话,Tomcat会找不到jre对应的路径,

         就算安装成功最后也运行不了Tomcat,所以第一步安装jdk就显得尤为重要

             我的默认路径为是:F:\jdk1.8\jre

         第二个路径:Tomcat安装路径

             我的安装路径为:F:\tomcat8.5

    4、安装成功后,找到tomcat.8.5\bin\startup.bat文件,双击

        

     

       我的成功了。

    5、如果双击后出现闪退现象,打开startup.bat文件,在文件的最后面加上:pause

     

    再次双击运行,这时候窗口不会再一闪而过,而是停留在桌面上,显示错误的信息,根据信息,更改错误(调试成功后,把pause去掉即可)。

     

    我遇到的错误为:

    The JRE_HOME environment variable is not defined correctly This environment variable is needed to run this program

    复制提示百度,未找到 jre文件的位置。

    tomcat安装时,路径没有错误,是环境变量中JRE_HOME的路径是上一次安装jdk的路径,导致闪退。更改现在的jre路径,再次运行,成功。

     

     

    闪退的问题可能会有各种不同,希望这篇记录可以帮助和我遇到同样问题的你。

    转载于:https://www.cnblogs.com/aichenxi/p/10630885.html

    展开全文
  • 项目需要用到tomcat,需要本地安装java,本次安装的是java1.8,安装过程可视化安装下一步直至完成,windows系统在dos下查看java版本命令如下:java -...Neither the JAVA_HOME nor the JRE_HOME environment variab...

    项目需要用到tomcat,需要本地安装java,本次安装的是java1.8,安装过程可视化安装下一步直至完成,windows系统在dos下查看java版本命令如下:java -version,出现版本号就安装成功了,直接点击运行会有闪退现象,通过dos执行startup.bat报错:
    Neither the JAVA_HOME nor the JRE_HOME environment variable is defined
    At least one of these environment variable is needed to run this program
    翻译:JAVA_HOME和JRE_HOME环境变量都没有定义
    至少需要其中一个环境变量来运行这个程序。
    需要手动配置java_home和jre_home,过程如下:
    我的电脑-属性-高级系统设置-高级-环境变量(在新窗口右下角)-新建用户变量
    变量名:JAVA_HOME
    变量值:{java安装路径}
    查看安装路径的方法:Java -verbose

    然后在系统变量Path添加环境变量%JAVA_HOME%;%JRE_HOME%;
    java1.8.0安装包下载地址

    展开全文
  • 启动Tomcat文件中的Start.bat时,出现错误:和原因:start.bat中会设置CATALINA_HOME环境变量start.bat中会调用setclasspath.bat,setclasspath.bat中又会设置JAVA_HOMEJRE_HOME环境变量解决方式:分别添加...

    启动Tomcat文件中的Start.bat时,出现错误:




    原因:

    • start.bat中会设置CATALINA_HOME的环境变量
    • start.bat中会调用setclasspath.bat,setclasspath.bat中又会设置JAVA_HOME和JRE_HOME的环境变量

    解决方式:

    • 分别添加环境变量,当然,前提是你已经安装了TomCat、JAVA,并获得了TomCat、JAVA、JRE三个安装路径

    AND:


    然后启动start.bat:


    并在浏览器中输入:localhost:8080,出现以下画面

    大功告成!

    展开全文
  • 在本shell中echo $JAVA_HOME显示了路径,代表环境变量配置成功,启动tomcat显示找不到jre 百思不得其解,后发现新启动的tomcat是在新的shell中运行,echo变量显示为空,恍然大悟 reboot就好 ...
  • CentOS + Tomcat 请配置 JRE_HOME 环境变量

    千次阅读 2015-10-13 23:57:05
    如题。 如果你是安装版的 JDK,jre在JDK目录下,也可以的。
  • JRE_HOME环境配置错误

    万次阅读 2018-10-10 20:46:28
    项目里内置tomcat,配置好java环境变量后启动tomcat时报错:JRE_HOME环境变量有误.,tomcat启动总是一闪而过. 然后我就开始百度,找到了一位有遇到同样问题的大神的博客:启动Tomcat一闪而过,报JRE_HOME环境配置错误. 她...
  • 启动Tomcat一闪而过,报JRE_HOME环境配置错误

    万次阅读 多人点赞 2017-12-06 17:01:28
    博主作为一个测试,也经常需要部署程序环境,比如部署测试环境、...今天我在部署一个Tomcat环境时,各种变量都配置完了,最后启动Tomcat时,Tomcat一闪而过,当时我的内心是崩溃的~~ 然后我就开始百度、定位问题。进入
  • 在系统的环境变量里增加一个系统变量JAVA_HOME,值为C:\Program Files\Java\jdk1.7.0_67 ...设置CATALINA_HOME环境变量 1、CATALINA_HOME是TOMCAT安装路径的别名,目的是为了方便使用TOMCAT 2、计算机>属性>
  • Tomcat启动时闪退问题(非Java环境变量...原理:Tomcat指定(JDK路径)JAVA_HOME而不用环境变量 1、打开你的tomcat文件,打开bin目录; 2、找到setclasspath.bat 3、在此目录开头添加如下这一行代码,后面路径是你的j
  • the JRE_HOME environment variable is not defined correctly This environment variableis needed to run this program 1.JRE是否安装成功 jdk和jre是两个不同的概念。 JDK(Java Development Kit)是java语言标准版...
  • 首先去 tomcat 官网下载 tomcat8 安装包,地址:https://tomcat.apache.org/download-80.cgi 在本地解压后打开 cmd 窗口 C:\Users\Administrator>d: D:\> D:\>cd apache-tomcat-8.5.56 ...The JRE_H
  • Ubuntu Server18.04,正常安装JDK,在/etc/profile中配置了全局的环境变量Tomcat Server 9.0.37,放在/usr/local/tomcat目录下 sudo sh catlina.sh run也好还是sudo sh startup.sh也好,死活启动不起来,报如下...
  • 如果安装过成中出现Neither the JAVA_HOME nor the JRE_HOME environment variable is defined 这种错误文章末有解决方法,可继续往后看。 安装 首先进入Tomcat官方网站 https://tomcat.apache.org/ 然后这里...
  • 问题描述:启动Tomcat一闪而过,报JRE_HOME环境配置错误的问题 操作:win+R,进入cmd命令行窗口,cd进入到Tomcat的安装文件夹,键入catalina run命令后,报如下错误: The JRE_HOME environment variable is not ...
  • 安装Tomcat时 ,设置JAVA_HOMEJRE_HOME

    万次阅读 2018-03-10 13:17:51
    http://blog.csdn.net/xw370457549/article/details/21638827安装tomcat后,运行startup.bat提示JAVA_HOMEJRE_HOME未配置,无法启动进行如下设置:例如JDK的安装路径为C:\Program Files\Java\jdk1.5.0在系统的环境...
  • 经常使用IDEA,最近想使用eclipse部署下...the JRE_HOME environment variable is not defined correctly This environment variableis needed to run this program 此时我的jdk版本是1.8,是小于我的tomcat9版本也...
  • 要在 “setclasspath.bat” 的开头手动声明环境变量即可
  • Neither the JAVA_HOME nor the JRE_HOME environment variable is defined At least one of these environment ...(JAVA_HOME和JRE_HOME环境变量都没有定义,运行此程序至少需要其中一个环境变量) 解决办法: 进...
  • IDEA配置好tomcat后,无法启动...Neither the JAVA_HOME nor the JRE_HOME environment variable is defined At least one of these environment variable is needed to run this program Disconnected from serve
  • 1.直接去官网安装即可,网址是,Apache Tomcat9,我...nonono,还有一堆的环境变量要设置,我们慢慢来。如果打开start.bat然后闪屏就过去了,那提供接下来几个步骤,查看一下是否有自己的问题,首先我们编辑一下start...
  • error: Linux下启动和关闭tomcat报错,如下图所示: 原因: ...因此需要在setclasspath.bat的开头手动声明环境变量。   解决方案: 用vim打开tomcat的bin目录下的setclasspath.sh,添...
  • java环境变量,mysql环境变量tomcat环境变量,这些变量感觉能简化就简化,所以在电脑里面的环境变量都是直接在path复制路径,才导致在安装tomcat启动时,出现Neither the JAVA_HOME nor the JRE_HOME environment ...
  • 解决办法:右击 我的电脑 - 高级 - 环境变量, 在系统变量中 新建  变量名:JRE_HOME 变量值:C:\Program Files\Java\jdk1.8.0_131(根据自己的)  我的:Win7 64位,jdk1.8.131 64位...
  • 最后上网查找了一下,需要手动在tomcat/bin/catalina.sh文件里声明jdk的环境变量可以解决。 解决方法: 需要在catalina.sh中添加jdk的环境变量 vim catalina.sh export JAVA_HOME=/usr/local/jdk ex
  • Tomcat安装后出现the JRE_HOME environment variable is not defined correctly 参考文献:https://blog.csdn.net/haleyliu123/article/details/68953796 文主要向大家介绍了Windows运维之在Windows下查...
  • tomcat8 配置过程 JRE_HOME错误等

    千次阅读 2016-05-09 09:41:05
    配置tomcat主要分为两步,一是配置安装配置java,二是配置tomcat 安装配置Java: 这一点按照网上教程即可,如下: ...2. 设置环境变量 安装完成之后,打开我的电脑--->属性面板 选择高级系统设置
  • 1、检查状态 发现 Neither the JAVA_HOME nor the JRE_HOME environment variable is defined 2、检查jdk 是否安装好 java - version  3、设置vi /opt/tomcat/bin/setclasspath.sh  export JAVA_HOME=/...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 33,176
精华内容 13,270
关键字:

jre_home环境变量tomcat