XAMPP 上的 Tomcat 无法为 JAVA_HOME 启动

Posted

技术标签:

【中文标题】XAMPP 上的 Tomcat 无法为 JAVA_HOME 启动【英文标题】:Tomcat upon XAMPP doesn't launch for JAVA_HOME 【发布时间】:2018-08-23 13:38:30 【问题描述】:

我已经阅读并尝试了很多关于 SO 的帖子,但没有人解决这个问题。

我为 JDK 和 JRE 版本设置了环境变量。我在“用户的用户变量”和“系统变量”这两个部分中添加了相同的值。我添加的变量是:JAVA_HOME->C:\PROGRA~1\Java\JDK9U4~1 and JRE_HOME->C:\PROGRA~1\Java\JRE9U4~1.

我的 JDK 和 JRE 安装目录分别是“C:\Program Files\Java\JDK 9u4”和“C:\Program Files\Java\JRE 9u4”。

当我运行 catalina_start.bat 时,我收到此错误:

[XAMPP]: Searching JDK HOME with reg query ...
Errore: The registry key or the specified value could not be found.
. [XAMPP]: Cannot find current JDK installation!
. [XAMPP]: Cannot set JAVA_HOME. Aborting ...
done.

我的 catalina_start.bat 文件的文本(我认为这是默认的)是:

@echo off
::::::::::::::::::::::::::::::::::::
::  Set JAVA_HOME and   ::
::::::::::::::::::::::::::::::::::::

IF EXIST tomcat\logs\catalina.pid (
  del /F/Q tomcat\logs\catalina.pid
) 

echo.
echo [XAMPP]: Searching JDK HOME with reg query ...
set KeyName=HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Development Kit

reg query "%KeyName%" /s
if %ERRORLEVEL% == 1 (
  echo . [XAMPP]: Cannot find current JDK installation! 
  echo . [XAMPP]: Cannot set JAVA_HOME. Aborting ...
  goto :END
)

set "CURRENT_DIR=%cd%"
set "CATALINA_HOME=%CURRENT_DIR%"

:: only for windows 32 bit if you have problems with the tcnative-1.dll
:: set CATALINA_OPTS=-Djava.library.path="%CATALINA_HOME%\bin"

set Cmd=reg query "%KeyName%" /s
for /f "tokens=2*" %%i in ('%Cmd% ^| find "JavaHome"') do set JAVA_HOME=%%j

echo.
echo [XAMPP]: Seems fine!
echo [XAMPP]: Set JAVA_HOME : %JAVA_HOME%
echo [XAMPP]: Set CATALINA_HOME : %CATALINA_HOME%
echo.

if %ERRORLEVEL% == 0 (
echo run > logs\catalina.pid
)

"%CATALINA_HOME%\bin\catalina.bat" run


:END
echo done.
pause

我已经尝试了很多解决方案,但没有任何帮助。我想知道是否有人可以帮助我解决这个问题,我将不胜感激。我希望我已经清楚地解释了自己(对不起我的英语)。感谢您的建议。

【问题讨论】:

向上。没有人可以帮助我吗? 我解决了这个问题。我的 JAVA_HOME 设置错误。 你是怎么做到的?因为我无法修复这个错误 【参考方案1】:

我通过换行解决了这个问题

set KeyName=HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Development Kit

set KeyName=HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\JDK

我查看了我的注册表,发现预期的 Key 是用常用的缩写 JDK 创建的。

另外,我还将我的tomcat_service_install.bat 更改为上述键名。这使得安装为 Windows 服务成为可能。

【讨论】:

【参考方案2】:

我通过使用 zip 文件下载 Java 11.0.2 为我解决了这个问题。因此它没有创建注册表项,所以我手动添加了它。上面的代码只搜索KeyName中的注册表键,所以只需将键创建为

HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Development Kit\<your version>

无需添加任何值,只需创建路径即可。

你可以这样做

按 Win+R 输入“regedit” 然后转到 HKEY_LOCAL_MACHINE -> 软件 右键单击软件 选择新建 -> 键 将新文件夹命名为“JavaSoft” 右键单击新创建的 JavaSoft 文件夹 选择新建 -> 键 将新文件夹命名为“Java Development Kit”。

【讨论】:

以上是关于XAMPP 上的 Tomcat 无法为 JAVA_HOME 启动的主要内容,如果未能解决你的问题,请参考以下文章

tomcat 不以 xampp 开头

Xampp 1.8.1:Apache 无法在端口 8080 中启动,该端口正被 tomcat 7 使用

同一应用程序上的两种不同语言 PHP 和 Java,Apache 上的 PHP 和 Tomcat 上的 Java

为啥我无法访问本地 XAMPP 上的某些页面或目录?

无法连接到 Mariadb Xampp 数据库

如何创建一个 java servlet 程序并使用 XAMPP Tomcat 运行它?