即使JAVA_HOME路径正确,Tomcat也没有运行

Qua*_*fan 23 java apache tomcat java-home windows-7

当我尝试使用tomcat运行时startup.bat出现以下错误,

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
Run Code Online (Sandbox Code Playgroud)

但后来我试着C:\>echo %java_home%得到以下结果

C:\Program Files\Java\jdk1.6.0_25\bin
Run Code Online (Sandbox Code Playgroud)

我甚至尝试JAVA_HOME手动设置系统变量列表,但这个问题仍然存在.

我该怎么做才能解决它?

我使用的是Windows 7.


更新

设置一个名为JAVA_HOME的新系统变量并设置其路径后"C:\Program Files\Java\jdk1.6.0_25\bin\",我再次尝试启动脚本,这次我收到一个新错误.

D:\Work\apache-tomcat-6.0.35\bin>startup.bat
Files\Java\jdk1.6.0_25"" was unexpected at this time.
Run Code Online (Sandbox Code Playgroud)

知道这个错误意味着什么吗?

我甚至尝试将路径设置为"C:\Program Files\Java\jdk1.6.0_25\"(没有bin)但发生了同样的错误.

Mat*_*zyk 28

尝试在其他地方安装java - 在没有空格的目录中.再次设置JAVA_HOME变量并重试.我记得Tomcat在Window XP上有一些问题,如果在启动包含空格时使用了任何变量.也许它与Windows 7类似.

我记得我必须更改处理Tomcat启动的Tomcat java类中的一些行.

@Edit:卢西亚诺打败我注意到它,但你也应该bin从中删除JAVA_HOME

@Edit:我还记得另一个修复(虽然我自己没有测试)是设置JAVA_HOME为速记版本,例如C:\Progra~1\Java\jdk1.6.0_25


Luc*_*ano 19

我认为你的JAVA_HOME应该指向

C:\Program Files\Java\jdk1.6.0_25
Run Code Online (Sandbox Code Playgroud)

代替

C:\Program Files\Java\jdk1.6.0_25\bin
Run Code Online (Sandbox Code Playgroud)

也就是说,没有bin文件夹.

UPDATE

如果我像你一样用引号设置JAVA_HOME,那么我会看到这个新错误.你用引号吗?如果是这样,请删除它们.

  • 我觉得这样说更礼貌. (2认同)

小智 8

在JAVA_HOME或JRE_HOME的任何环境变量的末尾避免使用分号

JAVA_HOME=C:\Program Files\Java\jdk1.6.0_25\bin
Run Code Online (Sandbox Code Playgroud)

JRE_HOME=C:\Program Files\Java\jdk1.6.0_32\jre
Run Code Online (Sandbox Code Playgroud)

应如图所示......


Mah*_*aha 5

我安装了Win 8 x86.我的Path变量有条目C:\Program Files\Java\jdk1.6.0_31\bin,我也有以下变量:

  • JAVA_HOME : C:\Program Files\Java\jdk1.6.0_31;
  • JRE_HOME : C:\Program Files\Java\jre6;

我的tomcat安装在 C:\Program Files\Apache Software Foundation\apache-tomcat-7.0.41

它仍然不适合我.

我尝试用Program Files这些路径替换Progra~1.我还尝试将JAVA移动到另一个文件夹,以便它的完整路径不包含任何空格.但没有任何效果.

最后,对我有用的环境变量是:

  • 将路径变量保持为完全Program FilesieC:\Program Files\Java\jdk1.6.0_31\bin
  • JAVA_HOME : C:\Program Files\Java\jdk1.6.0_31
  • 删除 JRE_HOME

所以我所做的就是删除JRE_HOME并在结束时删除分号JAVA_HOME.我认为分号应该不是问题,尽管我删除了它.我正在给这些设置,因为经过大量的谷歌搜索没有任何对我有用,突然这些似乎工作.您可以复制并查看它是否适合您.

这也适用于Win 7 x64,其中

  • 包含路径变量 C:\Program Files (x86)\Java\jdk1.7.0_17\bin
  • JAVA_HOME设置为C:\Program Files (x86)\Java\jdk1.7.0_17(不带分号)

请告诉我为什么这有效,我知道删除JRE_HOME是一个奇怪的解决方案,但任何猜测它有什么不同?