Setting up Tomcat 7 on server: "NB: JAVA_HOME should point to a JDK not JRE"... Why?

configuration, java, tomcat

Solution

Tomcat does not require a JDK. Tomcat ships with the Eclipse JDT compiler which Tomcat uses as part of the *.jsp -> *.java -> *.class process to convert JSPs to compiled Servlets.

However, if you specify JAVA_HOME, Tomcat expects that to point to a full JDK installation. If you want to use a JRE then you need to set JRE_HOME rather than JAVA_HOME.

Problem

I'm trying to set up Tomcat 6 on my server instance (Fresh install of Windows Server 2008 R2 Enterprise). I want to make a Java EE service available via a URL. It works via `localhost` on the server. I put the .war file in my `/webapps`, run startup.bat in the `/bin` and then i navigated to `localhost:80/myWebServce` in my browser to get directed to my welcome page. When I try to create a service by running service.bat (in the `/bin` folder)) I get an error message that says: ``` 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 ``` My question is: Why? I thought a JDK was just a JRE + Some development tools(an IDE, a debugger etc). Why does tomcat need a JDK To run as a service, but not on localhost? What's in a JDK that's needed to run a webservice?

Original source