在服务器上设置Tomcat 7:“NB:JAVA_HOME应该指向JDK而不是JRE”……为什么?

我正在尝试在我的服务器实例上设置Tomcat 6(全新安装Windows Server 2008 R2 Enterprise)。 我想通过URL提供Java EE服务。

它通过服务器上的localhost工作。 我将.war文件放在我的/webapps ,在/bin运行startup.bat然后我在浏览器中导航到localhost:80/myWebServce以转到我的欢迎页面。

当我尝试通过运行service.bat(在/bin文件夹中)创建服务时,我收到一条错误消息:

 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 

我的问题是:为什么? 我认为JDK只是一个JRE +一些开发工具(IDE,调试器等)。 为什么tomcat需要JDK作为服务运行,而不是在localhost上运行? 运行Web服务需要JDK中的内容?

Tomcat不需要JDK。 Tomcat附带Eclipse JDT编译器,Tomcat将其用作* .jsp – > * .java – > * .class进程的一部分,以将JSP转换为已编译的Servlet。

但是,如果指定JAVA_HOME,则Tomcat希望指向完整的JDK安装。 如果要使用JRE,则需要设置JRE_HOME而不是JAVA_HOME。

从JRE_HOME / JAVA_HOME变量的末尾删除分号。 不应该有分号……

变量:JAVA_HOME值:C:\ Program Files \ Java \ jdk1.6.0(注意:末尾没有分号)

变量:JRE_HOME值:C:\ Program Files \ Java \ jre1.6.0(注意:末尾没有分号)

应用以上更改并成功运行tomcat。

我有同样的问题。 指定JRE_HOME并收到相同的错误消息。 删除系统环境变量JAVA_HOME并重新启动后,错误消息仍然存在。 原来我的JRE路径实际上是不正确的,错误信息只是令人困惑。

Web容器需要JDK才能支持JSP之类的源代码编译,因为JDK中存在编译器它需要相同的东西。(这是它可能需要JDK的原因之一)

将JAVA_HOME作为系统变量而不是环境变量,重启应用程序(Tomcat)。 它应该工作正常。

或者,您可能面临与此处讨论的相同的问题

是的,我们需要jdk以运行您的要求..因为您提供.war文件,我们需要jar命令从war,jar ..文件中提取内容。 在JRE中找不到jar命令,但仅在JDK中找到。 如果你希望你能结账JDK,JRE。 这是我从其他事物中观察到的基本事物。

检查JAVA_HOME是否已正确设置,如果安装了JDK,则为jre创建JRE_HOME,将为JDK设置JAVA_HOME。 还可以在"C:/Progra~1/...""C:/Program Files/..."切换,以确保系统正确识别路径