TeamCity 服务器找不到 Java 可执行文件,即使我已经设置了它

TeamCity server couldn't found Java executable even though i have set it

大约 1 个月前,我仍然可以 运行 TeamCity 服务器,但到现在为止,它说找不到 Java 版本 1.8 的可执行文件。

我已经设置了环境变量:

JAVA_HOME=C:\Program Files\Java\jdk-11.0.1

JRE_HOME=C:\Program Files\Java\jre1.8.0_192

CATALINA_HOME=C:\apache-tomcat-9.0.12

在路径变量中,我将其设置为:

%JAVA_HOME%\bin;%JRE_HOME%\bin;%CATALINA_HOME%\lib

但是还是说找不到JAVA_HOME或JRE_HOME。

我在下面附上的 TeamCity 服务器日志。

[2018-11-27 10:50:45,773] FileTaskSettings                  [Info] Parsing service settings
[2018-11-27 10:50:45,774] FileTaskSettings                  [Info] Program to execute:   C:\WINDOWS\system32\cmd.exe
[2018-11-27 10:50:45,774] FileTaskSettings                  [Info] Program arguments:    /c teamcity-server.bat run service
[2018-11-27 10:50:45,774] FileTaskSettings                  [Info] Program work dir:     c:\TeamCity\bin
[2018-11-27 10:50:45,774] FileTaskSettings                  [Info] Program stop timeout: 900000
[2018-11-27 10:50:45,774] CreateServiceSettingsAction       [Info] Service log file is set to: c:\TeamCity\logs\teamcity-winservice.log
[2018-11-27 10:50:45,774] CreateServiceSettingsAction       [Info] Installing service unser LOCAL_SYSTEM account
[2018-11-27 10:50:45,776] CreateServiceCommand              [Info] Service 'TeamCity' was created
[2018-11-27 10:50:45,778] CreateServiceAction               [Info] 
[2018-11-27 10:50:45,778] CreateServiceAction               [Info] Use the folloging commands to start/stop the service:
[2018-11-27 10:50:45,778] CreateServiceAction               [Info]   net.exe start TeamCity
[2018-11-27 10:50:45,778] CreateServiceAction               [Info]     to start service
[2018-11-27 10:50:45,778] CreateServiceAction               [Info] 
[2018-11-27 10:50:45,778] CreateServiceAction               [Info]   net.exe stop TeamCity
[2018-11-27 10:50:45,778] CreateServiceAction               [Info]     to stop service
[2018-11-27 10:50:45,778] CreateServiceAction               [Info] 
[2018-11-27 11:20:16,283] FileTaskSettings                  [Info] Parsing service settings
[2018-11-27 11:20:16,283] FileTaskSettings                  [Info] Program to execute:   C:\WINDOWS\system32\cmd.exe
[2018-11-27 11:20:16,283] FileTaskSettings                  [Info] Program arguments:    /c teamcity-server.bat run service
[2018-11-27 11:20:16,283] FileTaskSettings                  [Info] Program work dir:     c:\TeamCity\bin
[2018-11-27 11:20:16,283] FileTaskSettings                  [Info] Program stop timeout: 900000
[2018-11-27 11:20:16,284] CreateServiceSettingsAction       [Info] Service log file is set to: c:\TeamCity\logs\teamcity-winservice.log
[2018-11-27 11:20:16,284] CreateServiceSettingsAction       [Info] Installing service unser LOCAL_SYSTEM account
[2018-11-27 11:20:16,286] CreateServiceCommand              [Info] Service 'TeamCity' was created
[2018-11-27 11:20:16,287] CreateServiceAction               [Info] 
[2018-11-27 11:20:16,287] CreateServiceAction               [Info] Use the folloging commands to start/stop the service:
[2018-11-27 11:20:16,287] CreateServiceAction               [Info]   net.exe start TeamCity
[2018-11-27 11:20:16,287] CreateServiceAction               [Info]     to start service
[2018-11-27 11:20:16,287] CreateServiceAction               [Info] 
[2018-11-27 11:20:16,288] CreateServiceAction               [Info]   net.exe stop TeamCity
[2018-11-27 11:20:16,288] CreateServiceAction               [Info]     to stop service
[2018-11-27 11:20:16,288] CreateServiceAction               [Info] 
[2018-11-27 11:20:28,729] ThreadedServiceTask               [Info] CallStartService
[2018-11-27 11:20:28,729] FileTaskSettings                  [Info] Parsing service settings
[2018-11-27 11:20:28,730] FileTaskSettings                  [Info] Program to execute:   C:\WINDOWS\system32\cmd.exe
[2018-11-27 11:20:28,730] FileTaskSettings                  [Info] Program arguments:    /c teamcity-server.bat run service
[2018-11-27 11:20:28,730] FileTaskSettings                  [Info] Program work dir:     c:\TeamCity\bin
[2018-11-27 11:20:28,730] FileTaskSettings                  [Info] Program stop timeout: 900000
[2018-11-27 11:20:28,834] console                           [Info] Starting TeamCity server
[2018-11-27 11:20:28,835] console                           [Info] Looking for installed Java...
[2018-11-27 11:20:29,138] console                           [Info] 'findstr' is not recognized as an internal or external command,
[2018-11-27 11:20:29,138] console                           [Info] operable program or batch file.
[2018-11-27 11:20:29,340] console                           [Info] 'findstr' is not recognized as an internal or external command,
[2018-11-27 11:20:29,340] console                           [Info] operable program or batch file.
[2018-11-27 11:20:29,845] console                           [Info] 'findstr' is not recognized as an internal or external command,
[2018-11-27 11:20:29,845] console                           [Info] operable program or batch file.
[2018-11-27 11:20:30,350] console                           [Info] 'findstr' is not recognized as an internal or external command,
[2018-11-27 11:20:30,350] console                           [Info] operable program or batch file.
[2018-11-27 11:20:30,451] console                           [Info] 'findstr' is not recognized as an internal or external command,
[2018-11-27 11:20:30,451] console                           [Info] operable program or batch file.
[2018-11-27 11:20:30,653] console                           [Info] 'findstr' is not recognized as an internal or external command,
[2018-11-27 11:20:30,653] console                           [Info] operable program or batch file.
[2018-11-27 11:20:30,653] console                           [Info] 
[2018-11-27 11:20:30,653] console                           [Info] Java executable of version 1.8 is not found:
[2018-11-27 11:20:30,653] console                           [Info] - Java executable is not found under the specified directories: "c:\TeamCity\jre"
[2018-11-27 11:20:30,653] console                           [Info] - Neither the JAVA_HOME nor the JRE_HOME environment variable is defined
[2018-11-27 11:20:30,653] console                           [Info] - Path to JVM is not found in Windows registry
[2018-11-27 11:20:30,653] console                           [Info] - Java executable is not found in the default locations
[2018-11-27 11:20:30,653] console                           [Info] - Java executable is not found in the directories listed in the PATH environment variable
[2018-11-27 11:20:30,653] console                           [Info] 
[2018-11-27 11:20:30,653] console                           [Info] Please make sure either JAVA_HOME or JRE_HOME environment variable is defined and is pointing to the root directory of the valid Java (JRE) installation
[2018-11-27 11:20:30,653] console                           [Info] 
[2018-11-27 11:20:30,653] console                           [Info] Environment variable FJ_DEBUG can be set to enable debug output
[2018-11-27 11:20:30,653] console                           [Info] 
[2018-11-27 11:20:30,653] console                           [Info] Java not found. Cannot start TeamCity server. Please ensure JDK or JRE is installed and JAVA_HOME environment variable points to it.
[2018-11-27 11:20:30,754] console                           [Info] Server exited unexpectedly with code 1 and will be restarted
[2018-11-27 11:20:30,754] console                           [Info] Starting TeamCity server
[2018-11-27 11:20:30,754] console                           [Info] Looking for installed Java...
[2018-11-27 11:20:30,956] console                           [Info] 'findstr' is not recognized as an internal or external command,
[2018-11-27 11:20:30,956] console                           [Info] operable program or batch file.
[2018-11-27 11:20:31,158] console                           [Info] 'findstr' is not recognized as an internal or external command,
[2018-11-27 11:20:31,158] console                           [Info] operable program or batch file.
[2018-11-27 11:20:31,360] console                           [Info] 'findstr' is not recognized as an internal or external command,
[2018-11-27 11:20:31,360] console                           [Info] operable program or batch file.
[2018-11-27 11:20:31,764] console                           [Info] 'findstr' is not recognized as an internal or external command,
[2018-11-27 11:20:31,764] console                           [Info] operable program or batch file.
[2018-11-27 11:20:31,966] console                           [Info] 'findstr' is not recognized as an internal or external command,
[2018-11-27 11:20:31,966] console                           [Info] operable program or batch file.
[2018-11-27 11:20:32,067] console                           [Info] 'findstr' is not recognized as an internal or external command,
[2018-11-27 11:20:32,067] console                           [Info] operable program or batch file.
[2018-11-27 11:20:32,067] console                           [Info] 
[2018-11-27 11:20:32,067] console                           [Info] Java executable of version 1.8 is not found:
[2018-11-27 11:20:32,067] console                           [Info] - Java executable is not found under the specified directories: "c:\TeamCity\jre"
[2018-11-27 11:20:32,067] console                           [Info] - Neither the JAVA_HOME nor the JRE_HOME environment variable is defined
[2018-11-27 11:20:32,067] console                           [Info] - Path to JVM is not found in Windows registry
[2018-11-27 11:20:32,067] console                           [Info] - Java executable is not found in the default locations
[2018-11-27 11:20:32,067] console                           [Info] - Java executable is not found in the directories listed in the PATH environment variable
[2018-11-27 11:20:32,067] console                           [Info] 
[2018-11-27 11:20:32,067] console                           [Info] Please make sure either JAVA_HOME or JRE_HOME environment variable is defined and is pointing to the root directory of the valid Java (JRE) installation
[2018-11-27 11:20:32,067] console                           [Info] 
[2018-11-27 11:20:32,067] console                           [Info] Environment variable FJ_DEBUG can be set to enable debug output
[2018-11-27 11:20:32,067] console                           [Info] 
[2018-11-27 11:20:32,067] console                           [Info] Java not found. Cannot start TeamCity server. Please ensure JDK or JRE is installed and JAVA_HOME environment variable points to it.
[2018-11-27 11:20:32,067] console                           [Info] Server exited unexpectedly with code 1 and will be restarted
[2018-11-27 11:20:32,168] console                           [Info] Starting TeamCity server
[2018-11-27 11:20:32,168] console                           [Info] Looking for installed Java...
[2018-11-27 11:20:32,370] console                           [Info] 'findstr' is not recognized as an internal or external command,
[2018-11-27 11:20:32,370] console                           [Info] operable program or batch file.
[2018-11-27 11:20:32,571] console                           [Info] 'findstr' is not recognized as an internal or external command,
[2018-11-27 11:20:32,571] console                           [Info] operable program or batch file.
[2018-11-27 11:20:32,773] console                           [Info] 'findstr' is not recognized as an internal or external command,
[2018-11-27 11:20:32,773] console                           [Info] operable program or batch file.
[2018-11-27 11:20:33,177] console                           [Info] 'findstr' is not recognized as an internal or external command,
[2018-11-27 11:20:33,177] console                           [Info] operable program or batch file.
[2018-11-27 11:20:33,379] console                           [Info] 'findstr' is not recognized as an internal or external command,
[2018-11-27 11:20:33,379] console                           [Info] operable program or batch file.
[2018-11-27 11:20:33,480] console                           [Info] 'findstr' is not recognized as an internal or external command,
[2018-11-27 11:20:33,480] console                           [Info] operable program or batch file.
[2018-11-27 11:20:33,480] console                           [Info] 
[2018-11-27 11:20:33,480] console                           [Info] Java executable of version 1.8 is not found:
[2018-11-27 11:20:33,480] console                           [Info] - Java executable is not found under the specified directories: "c:\TeamCity\jre"
[2018-11-27 11:20:33,480] console                           [Info] - Neither the JAVA_HOME nor the JRE_HOME environment variable is defined
[2018-11-27 11:20:33,480] console                           [Info] - Path to JVM is not found in Windows registry
[2018-11-27 11:20:33,480] console                           [Info] - Java executable is not found in the default locations
[2018-11-27 11:20:33,480] console                           [Info] - Java executable is not found in the directories listed in the PATH environment variable
[2018-11-27 11:20:33,480] console                           [Info] 
[2018-11-27 11:20:33,480] console                           [Info] Please make sure either JAVA_HOME or JRE_HOME environment variable is defined and is pointing to the root directory of the valid Java (JRE) installation
[2018-11-27 11:20:33,480] console                           [Info] Team
[2018-11-27 11:20:33,480] console                           [Info] Environment variable FJ_DEBUG can be set to enable debug output
[2018-11-27 11:20:33,480] console                           [Info] 
[2018-11-27 11:20:33,480] console                           [Info] Java not found. Cannot start TeamCity server. Please ensure JDK or JRE is installed and JAVA_HOME environment variable points to it.
[2018-11-27 11:20:33,480] console                           [Info] Server exited unexpectedly with code 1 and restart limit (3) is reached
[2018-11-27 11:20:33,481] ProcessCommand                    [Info] Process exited with code: 0
[2018-11-27 11:20:33,581] ServiceExecuteProcessTask        [Error] Service process exited without service stop request

阅读此答案后我找到了解决方案 。 基本上 TeamCity 只得到 JRE_HOME 变量,而不是 Path 变量,所以它里面没有 ..\bin。我只是在设置 TeamCity 时编辑 JRE_HOME 并且它起作用了。

我遇到过类似的问题,并且能够通过执行以下操作解决它:

  1. 下载 TeamCity 的 .exe 安装程序。
  2. 将其安装到新文件夹中。
  3. 从新安装文件夹复制 'jre' 文件夹,并将其粘贴到原始 TeamCity 安装文件夹中。

我运行入本也。事实证明,答案是调试日志中较早的 'findstr' 错误。出于某种原因,我的 Windows 构建服务器在其 PATH 中丢失了 'C:\Windows\System32'。 'Findstr' 被 teamcity 内部批处理文件用来解析 Java 的版本。这会导致启动脚本回退并假设未安装 Java。将此目录添加回路径后,服务器启动正常。