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

时间:2013-12-09 11:21:05

标签: java tomcat configuration

我正在尝试在我的服务器实例上设置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上运行? JDK中运行Web服务需要什么?

7 个答案:

答案 0 :(得分:9)

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

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

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

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

答案 1 :(得分:6)

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

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

答案 2 :(得分:3)

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

答案 3 :(得分:0)

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

答案 4 :(得分:0)

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

或者,您可能遇到与讨论here

相同的问题

答案 5 :(得分:0)

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

答案 6 :(得分:0)

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