XAMPP上的Tomcat因JAVA_HOME而无法启动

3

我已经阅读并尝试了许多SO上的帖子,但没有一个解决了这个问题。

我设置了JDK和JRE版本的环境变量。我在“用户变量”和“系统变量”两个部分中添加了相同的值。我添加的变量是:JAVA_HOME->C:\PROGRA~1\Java\JDK9U4~1 和 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

我已经尝试了许多解决方案,但都没有帮助到我。我想知道是否有人可以帮助我,我会非常感激的。希望我已经表达清楚了(对我的英语很抱歉)。谢谢您的建议。


升级。没有人能帮我吗? - Huntwer
我解决了这个问题。我的JAVA_HOME设置错误了。 - Huntwer
你是怎么做到的?因为我无法修复这个错误。 - Yonela Nuba
3个回答

3

我通过更改这行代码解决了这个问题。

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

to

set KeyName=HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\JDK

我查看了注册表,发现预期的键已经被创建,并使用常用缩写JDK

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


谢谢,我想指出这个配置必须在C:\xampp\tomcat\catalina_start.bat中-只需在任何文本编辑器中打开catalina_start.bat并应用更改。 - Husam Ebish

2
我通过下载Java 11.0.2的zip文件解决了我的问题。这样就不会创建注册表项,所以我手动添加了它。上面的代码只在KeyName中搜索注册表键,因此只需创建该键即可。"Original Answer"翻译成"最初的回答"。
HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Development Kit\<your version>

没有必要添加任何值,只需创建路径。
您可以按以下步骤操作:
1. 按Win+R。 2. 键入“regedit”。 3. 转到HKEY_LOCAL_MACHINE -> SOFTWARE。 4. 右键单击SOFTWARE。 5. 选择新建->项。 6. 将新文件夹命名为“JavaSoft”。 7. 右键单击新创建的JavaSoft文件夹。 8. 选择新建->项。 9. 将新文件夹命名为“Java开发工具包”。
最初的回答:

1
在你的catalina_start.bat文件中添加一行如下的代码;
set "CURRENT_DIR=%cd%"
set "CATALINA_HOME=%CURRENT_DIR%"
set JAVA_HOME=C:\yourJDKpath

还有一个重要的事情是将它放在你的catalina_stop.bat文件中。 - undefined
你还可能需要注释掉注册表查询检查和错误处理,以便它可以继续到这个设置。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接