原创博文,欢迎转载,转载时请务必附上博文链接,感谢您的尊重。

一、问题场景:

我的软件和环境:

  • 操作系统:Windows 10
  • Tomcat版本:Tomcat 9.0.44(非安装版)
  • Java环境:JDK 1.8.0

需要下载 Tomcat 和 Java ,请转博文:https://jiming.blog.csdn.net/article/details/104713763

Tomcat启动、关闭方法:

  • 管理员身份打开cmd,进入 tomcat 目录下的 /bin,输入【startup.bat】指令,运行启动文件即可;
  • 关闭窗口,就相当于关闭本地 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环境变量,运行此程序至少需要这些环境变量中的一个。

既然是环境变量加载不到,我们就简单概括的分析一下,Tomcat 在哪里需要加载JDK环境变量:

  • 先来看看 startup.bat 文件,因为 Tmocat 启动会第一个调用它 →

  • startup.bat 调用了 catalina.bat,一起来看看 →

  • catalina.bat 则调用了 setclasspath.bat,额嗯,重点就在这里了!!

整个调用链路:启动文件startup.bat → catalina.bat → setclasspath.bat,setclasspath.bat 里读取系统的环境变量。

做程序员都知道的,配置系统的JAVA【环境变量】。如果“JAVA_HOME”和“JRE_HOME”本身为空,在系统变量中又找不到,就会出现标题中的问题,导致 Tomcat 启动失败。


三、解决办法:

我总结了2种解决方法,原理上是一致的,都是为了让Tomcat启动时能够加载到系统的JAVA环境变量。

  • 方法1,是你搜同类问题时,其他博客中普遍介绍的一种,很直接很暴力很有效;
  • 而方法2,我认为是最正统的从根本上解决问题的方法。

1. 直接修改 setclasspath.bat 文件:

因为启动 Tomcat 会调用 Tomcat 安装文件中的 “startup.bat”,“startup.bat” 调用了 “catalina.bat”,而它调用了 “setclasspath.bat”,而“setclasspath.bat” 会读取环境变量,因此只要在 “setclasspath.bat” 的开头手动声明环境变量即可;

如:我的Java 1.8.0 安装在了 D:\Program Files\Java\ 目录下

set JAVA_HOME=D:\Program Files\Java\jdk1.8.0_191
set JRE_HOME=D:\Program Files\Java\jdk1.8.0_191\jre

2. 配置JAVA的系统环境变量

右键点击【我的电脑】→选择【属性】→找到【高级系统设置】→进入【环境变量】设置界面...

小伙伴们是不是非常熟悉,没错,新装机的时候,我们都是这么配置JAVA的系统环境变量的,因为之前没有配置,一直使用IDE的默认JDK,所以引发了上述问题

在这里,我们需要配置两个参数:JAVA_HOME 和 Path

  • JAVA_HOME:D:\Program Files\Java\jdk1.8.0_191(你安装的JDK的磁盘路径)

  • Path:%Java_Home%\bin;%Java_Home%\jre\bin;

配置完成以后,重新启动 Tomcat 即可,下面是启动成功的cmd日志,至于Tomcat日志会弹出新的终端显示。

the end ,thank you...


我是 IT无知君,您的点赞、评论和关注,是我不懈创作的动力。
学无止境,气有浩然,让我们一起加油,天涯未远,江湖有缘再见!!

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐