When I am trying to run tomcat using startup.bat
I get the following error,
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
But then I try C:\>echo %java_home%
and I get the following result
C:\Program Files\Java\jdk1.6.0_25\bin
I have even tried setting JAVA_HOME
manually to system variable list, but this issue remains.
What can I do to solve it?
I am using Windows 7.
Update
After setting a new system variable named JAVA_HOME and setting its path to "C:\Program Files\Java\jdk1.6.0_25\bin\"
, I tried the start up script again and this time I get a new error.
D:\Work\apache-tomcat-6.0.35\bin>startup.bat
Files\Java\jdk1.6.0_25"" was unexpected at this time.
Any idea what this error means?
I even tried setting the path to "C:\Program Files\Java\jdk1.6.0_25\"
(that is without bin) but same error occurs.
Try installing java somewhere else - in a directory without spaces. Set again the JAVA_HOME
variable and try again. I remember Tomcat had some problems on Window XP with spaces if any variables it was using while starting contained spaces. Maybe it's similar with Windows 7.
I remember I had to change some lines in Tomcat java classes which were handling Tomcat startup.
@Edit: Luciano beat me to noticing it but you should also remove bin
from JAVA_HOME
@Edit: I also remember that another fix (didn't test it myself, though) was to set JAVA_HOME
to the shorthand version e.g. C:\Progra~1\Java\jdk1.6.0_25
I think that your JAVA_HOME should point to
C:\Program Files\Java\jdk1.6.0_25
instead of
C:\Program Files\Java\jdk1.6.0_25\bin
That is, without the bin folder.
UPDATE
That new error appears to me if I set the JAVA_HOME with the quotes, like you did. Are you using quotation marks? If so, remove them.
Avoid semicolon in the end of any environment variables... from JAVA_HOME or JRE_HOME
JAVA_HOME=C:\Program Files\Java\jdk1.6.0_25\bin
and
JRE_HOME=C:\Program Files\Java\jdk1.6.0_32\jre
should be like as shown...
I had Win 8 x86 installed. My Path
variable had entry C:\Program Files\Java\jdk1.6.0_31\bin
and I also had following variables:
JAVA_HOME
:C:\Program Files\Java\jdk1.6.0_31;
JRE_HOME
:C:\Program Files\Java\jre6;
My tomcat is installed at C:\Program Files\Apache Software Foundation\apache-tomcat-7.0.41
And still it did not worked for me.
I tried by replacing Program Files
in those paths with Progra~1
. I also tried by moving JAVA to another folder so that full path to it does not contain any spaces. But nothing worked.
Finally environment variables that worked for me are:
- Kept path variable as is with full
Program Files
i.e.C:\Program Files\Java\jdk1.6.0_31\bin
JAVA_HOME
:C:\Program Files\Java\jdk1.6.0_31
- Deleted
JRE_HOME
So what I did is removed JRE_HOME
and removed semicolon at the end of JAVA_HOME
. I think semicolon should not be an issue, though I removed it. I am giving these settings, since after a lot of googling nothing worked for me and suddenly these seem to work. You can replicate and see if it works for you.
This also worked for Win 7 x64, where
- Path variable contained
C:\Program Files (x86)\Java\jdk1.7.0_17\bin
JAVA_HOME
is set toC:\Program Files (x86)\Java\jdk1.7.0_17
(without semicoln)
Please tell me why this worked, I know removing JRE_HOME
was weird solution, but any guesses what difference it makes?
Remove the 'bin' from JAVA_HOME. That solves the issue.
Set Environment Variable ([Windows Key]+[Pause Key], switch to "Advanced", click "Environment Variables", in "System Variables" (lower list), click "New" (or "Edit" if you already have it),
name: JAVA_HOME
value: C:\PROGRA~1\Java\JDK16~1.0_3
for C:\Program Files\Java\jdk1.6.0_32
click "ok",
go to "path" in "system variables",
add ; at the end of the line (unless there is already one there),
add: C:\PROGRA~1\Java\JDK16~1.0_3\bin
click "ok" through all. -- restart your computer (advisable)
I set the
variable name : JAVA_HOME value : C:\Program Files\Java\jdk1.6.0_32
I set these properties in system/environment variables without semicolon, tomcat is running on my system.
It really works.
Also ensure that you have the correct version of Tomcat for the CPU type. I had installed a 64bit tomcat on a 32bit O/S but it was giving me the JAVA_HOME exception when that wasn't the case at all.
there are two types of environment variable first User variable if you path in this it will work for that particular user only. second is System variable if you set path in this it is used by all type of users.. In my system i set JAVA_HOME in system variable,it was not working,then i set path in User variable it is working.....so try in both type of environment variable...
Some times semiColon makes matter please ensure
JAVA_HOME=c:\Program Files\Java\jdk1.6.0_32
but not
JAVA_HOME=c:\Program Files\Java\jdk1.6.0_32;
Same problem i got but not solved
Set environment variables for JAVA_HOME and JRE_HOME without the \bin. That worked for me
I deleted the Tomcat and unzipped it again and it worked.
To run Tomcat8 you need to have JRE_HOME defined in Env Variable.
JAVA_HOME alone will not do even if correctly set.
JRE_HOME = C:\Program Files\Java\jdk1.8.0_77\jre
You should select the JRE that is inside SDK, i.e. one with your JDK(SDK) installation. In other words your JAVA_HOME + \jre
When compiling JDK is needed to support JSP, to compile Servlets which are generated from *.jsp files. Otherwise to run JRE is needed. So when you develop you need JAVA_HOME and when you deploy you need JRE_HOME.
For reference for me with Atlassian's Bamboo the issue was because I had wrapped the command in speech marks
So
SET JRE_HOME="C:\Program Files\Java\jre1.8.0_121"
Was wrong, where as the right version is
SET JRE_HOME=C:\Program Files\Java\jre1.8.0_121
This gave me the error message
Files\Java\jre1.8.0_121"" was unexpected at this time.
Remove semicolon and you can see that link: http://www.ntu.edu.sg/home/ehchua/programming/howto/Tomcat_HowTo.html
First Run the tomcat directly through the tomcat /bin folder with
startup.bat if running sucessful the set the variable as below sample
JAVA_HOME value : C:\Program Files\Java\jdk1.6.0_32;
path: C:\Program Files\Java\jdk1.6.0_32\bin;
CATALINA_HOME=C:\Program Files\Apache Software Foundation\Apache Tomcat 7.0.27 ;
PATH=%PATH%;%JAVA_HOME%\bin;%CATALINA_HOME%\bin;
if needed CLASS_PATH:%CATALINA_HOME%\lib;%JAVA_HOME%\lib;
I had similar problem and please note that we need not set JAVA_HOME unless we are going to use debug mode. tomcat in windows 7 can handle spaces in environment variables the problem is because of "bin" in the path. setting JRE_HOME to C:\Program Files (x86)\Java\jre1.8.0_65 solved my problem and tomcat is up and running without any trouble
来源:https://stackoverflow.com/questions/8858711/tomcat-is-not-running-even-though-java-home-path-is-correct