我正在使用tomcat 8.5.15。我的项目版本,我有一个关于为tomcat设置java环境变量的问题。
我在我的Windows机器上安装了JRE,并将环境变量设置为JAVA_HOME而不是JRE_HOME。
service.bat install %servicename%
正在抛出错误。说
未正确定义JAVA_HOME环境变量。
注意:JAVA_HOME应该指向JDK而不是JRE 但是,当我说catalina.bat debug
时,它会引发同样的错误: NB:JAVA_HOME应该指向JDK而不是JRE
如果我运行catalina.bat start
,catalina.bat无法检查java环境变量?
如何为这两个脚本实现相同的行为?
谢谢你, 拉斯达马。
答案 0 :(得分:0)
不。这不是一个错误。 JRE仅包含Java Runtime,只有在您只想运行Java应用程序时才可以使用它。但是要使用JVM调试器功能,必须使用JAVA_HOME
指定位置的JDK。
catalina.bat start
只运行Tomcat,因此JRE就足够了。
catalina.bat debug
将启用调试器并运行Tomcat,因此需要JDK。
事实上,RUNNING.txt
已经解释了这种行为:
(3.2)设置JRE_HOME或JAVA_HOME(必填)
这些变量用于指定Java运行时的位置 环境或用于启动Tomcat的Java Development Kit。
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.
另见:What is the difference between JDK and JRE?
2018年6月18日更新:
真正的问题是,如果您安装JRE并将JRE路径设置为JAVA_HOME 而不是JRE_HOME catalina.bat能够找到jre路径和 正常开始。但是,service.bat在里面查找jre文件夹 JAVA_HOME并失败了。如果你定义了JRE_HOME变量,也可以定义service.bat 效果很好。
这是因为catalina.bat
会在内部调用setclasspath.bat
而setclasspath.bat
会尝试确保JAVA_HOME
和JRE_HOME
有效且一致。在您的情况下,它会将JRE_HOME
设置为JAVA_HOME
,因此即使您未设置catalina.bat
,JRE_HOME
也能够找到JRE路径。
service.bat
拥有自己的JAVA_HOME
/ JRE_HOME
检查逻辑。因此,如果您只想安装JRE但只设置JAVA_HOME
,请尝试在setclasspath.bat
之前执行catalina.bat
。