我正在为我的项目使用 tomcat 8.5.15. 版本,我有一个关于为 Tomcat 设置 java 环境变量的问题。
我已经在我的 Windows 机器上安装了 JRE,并将环境变量设置为 JAVA_HOME 而不是 JRE_HOME。
- catalina.bat start 命令工作正常,尽管我错误地定义了这个变量。
service.bat install %servicename%
抛出错误。未正确定义JAVA_HOME环境变量。 注意:JAVA_HOME应该指向JDK而不是JRE
但是,当我说catalina.bat debug
时,它会通过说NB:JAVA_HOME 应该指向 JDK 而不是 JRE来引发相同的错误
为什么卡塔琳娜.bat如果我运行catalina.bat start
无法检查 Java 环境变量? 如何为这两个脚本实现相同的行为?
谢谢 拉斯达马。
No.It 不是错误。JRE 仅包含 Java 运行时,仅当您只想运行 Java 应用程序而仅此而已时,才可以使用它。但是要使用 JVM 调试器功能,您必须使用 JDK 的位置由JAVA_HOME
指定。
catalina.bat start
只会运行Tomcat,所以JRE就足够了。
catalina.bat debug
将启用调试器并运行 Tomcat ,因此需要 JDK。
事实上,RUNNING.txt
已经解释了这种行为:
(3.2( 设置JRE_HOME或JAVA_HOME(必填(
这些变量用于指定 Java 运行时的位置 环境或用于启动 Tomcat 的 Java 开发工具包。
JRE_HOME变量用于指定 JRE 的位置。这 JAVA_HOME变量用于指定 JDK 的位置。
使用 JAVA_HOME 可以访问某些其他启动选项 使用JRE_HOME时不允许。
如果同时指定了JRE_HOME和JAVA_HOME,则使用 JRE_HOME。
而在catalina.bat
中,它还提到:
# JAVA_HOME Must point at your Java Development Kit installation.
# Required to run the with the "debug" argument.
#
# JRE_HOME Must point at your Java Runtime installation.
# Defaults to JAVA_HOME if empty. If JRE_HOME and JAVA_HOME
# are both set, JRE_HOME is used.
另请参阅:JDK 和 JRE 有什么区别?
更新于18-六月-2018 :
真正的问题是,如果您安装 JRE 并将 JRE 路径设置为 JAVA_HOME 而不是JRE_HOME卡塔利娜.bat能够找到 JRE 路径和 正常启动。但是,服务.bat在里面查找 jre 文件夹 JAVA_HOME并失败。如果定义JRE_HOME变量,则服务.bat 效果很好。
这是因为catalina.bat
会在内部调用setclasspath.bat
,setclasspath.bat
努力确保JAVA_HOME
和JRE_HOME
有效且一致。在您的情况下,它会将JRE_HOME
设置为JAVA_HOME
,因此即使您没有设置JRE_HOME
,catalina.bat
也能找到 JRE 路径。
service.bat
有自己的检查逻辑JAVA_HOME
/JRE_HOME
.所以,如果你只想安装JRE而只设置JAVA_HOME
,请尝试在catalina.bat
之前执行setclasspath.bat
。