我已经安装了 Java 11 并将系统变量设置为:
JAVA_HOME
C:\Program Files\AdoptOpenJDK\jdk-11.0.5.10-hotspot
和路径
C:\Program Files\AdoptOpenJDK\jdk-11.0.5.10-hotspot\bin
当我尝试使用 service.bat 将 tomcat 安装为服务时,出现以下错误:
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 安装在没有空格的目录中,但我遇到了同样的错误。
echo java 命令给了我正确的输出
echo %JAVA_HOME%
C:\Program Files\AdoptOpenJDK\jdk-11.0.5.10-hotspot
感谢任何帮助。谢谢
编辑1:对于安德烈斯的回答,下面是我的第57 -69行
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 Service will try to guess them from the registry.
goto okJavaHome
:gotJreHome
if not exist "%JRE_HOME%\bin\java.exe" goto noJavaHome
if not exist "%JRE_HOME%\bin\javaw.exe" goto noJavaHome
goto okJavaHome
:gotJdkHome
if not exist "%JAVA_HOME%\jre\bin\java.exe" goto noJavaHome
if not exist "%JAVA_HOME%\jre\bin\javaw.exe" goto noJavaHome
if not exist "%JAVA_HOME%\bin\javac.exe" goto noJavaHome
if not "%JRE_HOME%" == "" goto okJavaHome
set "JRE_HOME=%JAVA_HOME%\jre"
goto okJavaHome
:noJavaHome
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
goto end
:okJavaHome
最佳答案
回顾一下信息:
以下是 apache-tomcat-7.0.96-windows-x64.zip
文件中 service.bat
的相关片段:
47 rem Make sure prerequisite environment variables are set
48 if not "%JAVA_HOME%" == "" goto gotJdkHome
. . .
56 :gotJdkHome
57 if not exist "%JAVA_HOME%\bin\javac.exe" goto noJavaHome
58 rem Java 9 has a different directory structure
59 if exist "%JAVA_HOME%\jre\bin\java.exe" goto preJava9Layout
60 if not exist "%JAVA_HOME%\bin\java.exe" goto noJavaHome
61 if not "%JRE_HOME%" == "" goto okJavaHome
62 set "JRE_HOME=%JAVA_HOME%"
63 goto okJavaHome
. . .
73 :okJavaHome
批处理脚本执行如下:
- 48:
JAVA_HOME
已定义,跳转到第56行 - 57:
%JAVA_HOME%\bin\javac.exe
存在,转到下一行 - 59:
%JAVA_HOME%\jre\bin\java.exe
不存在,转到下一行 - 60:
%JAVA_HOME%\bin\java.exe
存在,转到下一行 - 61:
JRE_HOME
未定义,转到下一行 - 62:将
JRE_HOME
设置为与JAVA_HOME
相同的值 - 63:跳转到第73行
现在,如果您收到第 69-71 行打印的消息,则其中一项检查失败,因此请使用以下命令手动检查它们:
Command Expected output
================================== ===============
echo %JAVA_HOME% C:\Program Files\AdoptOpenJDK\jdk-11.0.5.10-hotspot
dir /b "%JAVA_HOME%\bin\javac.exe" javac.exe
dir /b "%JAVA_HOME%\jre\bin\java.exe" The system cannot find the path specified.
dir /b "%JAVA_HOME%\bin\java.exe" java.exe
echo %JRE_HOME% %JRE_HOME%
当您发现哪一个没有给出预期的输出时,您就会知道为什么会收到您收到的消息。
关于java - 在 Java 11 上安装 tomcat 7 作为服务 :NB: JAVA_HOME should point to a JDK not a JRE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59402002/