【问题标题】:Installing tomcat 7 as a service on Java 11:NB: JAVA_HOME should point to a JDK not a JRE在 Java 11 上安装 tomcat 7 作为服务:NB:JAVA_HOME 应该指向 JDK 而不是 JRE
【发布时间】:2019-12-19 00:57:51
【问题描述】:

我已安装 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

感谢任何帮助。谢谢

Edit1:对于 Andres 的回答,下面是我的第 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

【问题讨论】:

  • java -version 输出?
  • @RobertoManfreda openjdk version "11.0.5" 2019-10-15 OpenJDK Runtime Environment AdoptOpenJDK (build 11.0.5+10) OpenJDK 64-Bit Server VM AdoptOpenJDK (build 11.0.5+10, mixed模式)
  • 确保你的变量中没有类似 JRE_HOME 的东西。也许是一个旧的 jdk_8 相关变量。如果问题仍然存在,请尝试将您的 JAVA_HOME 移动到系统变量中(如果您还没有)。否则你的配置似乎是正确的!
  • 我没有设置 JRE_HOME。我确实尝试将 Java Home 移动到用户变量,但没有奏效。
  • 尝试移入系统变量。 echo %PATH% 输出?

标签: java tomcat7 java-11


【解决方案1】:

重述信息:

  • JAVA_HOME 已定义
  • JRE_HOME 未定义(来自comment
  • Tomcat 版本为 7.0.96(来自comment
  • 你正在执行service.bat

这是来自apache-tomcat-7.0.96-windows-x64.zip 文件的service.bat 的相关sn-p:

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%

当您发现哪个没有给出预期的输出时,您就会知道为什么会收到您收到的消息。

【讨论】:

  • 并确保以将要运行该服务的同一用户身份执行这些命令,否则您可能会遇到访问限制问题。
  • @jwenting 服务实际上配置为默认以Local System运行,所以注释不适用。
  • 嗨@Andreas 我尝试了你所有的命令,它们给了我预期的输出。我还在我的问题中粘贴了我的 service.bat 部分
  • @Rose 这真的很奇怪,因为我从apache-tomcat-7.0.96-windows-x64.zip 文件https://archive.apache.org/dist/tomcat/tomcat-7/v7.0.96/bin/ 的答案中得到了service.bat 文件,而你said 你正在使用Tomcat 7.0.96,所以你的怎么会不一样?请重新检查您拥有的 Tomcat 7 版本。
【解决方案2】:

我必须在我的笔记本电脑上安装 JRE 11 并将其粘贴到 JDK 文件夹中。然后我能够将tomcat安装为具有与我的问题中提到的相同路径和JAVA_HOME的服务。

【讨论】:

    猜你喜欢
    • 2013-12-26
    • 2020-04-30
    • 2017-09-15
    • 2019-04-19
    • 2018-09-16
    • 2019-02-27
    • 1970-01-01
    • 2018-11-10
    相关资源
    最近更新 更多