在服务器上设置Tomcat 7:"注意:JAVA_HOME应指向JDK而不是JRE" ...为什么?

7
我正在尝试在我的服务器实例上安装Tomcat 6(Windows Server 2008 R2企业版的全新安装)。我想通过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才能作为服务运行,但在本地主机上不需要呢?JDK中有什么东西是运行Web服务所需的呢?

7个回答

9
请将JRE_HOME / JAVA_HOME变量末尾的分号删除。不应该有分号。
变量:JAVA_HOME 值:C:\ Program Files \ Java \ jdk1.6.0(注意:末尾没有分号)
变量:JRE_HOME 值:C:\ Program Files \ Java \ jre1.6.0(注意:末尾没有分号)
应用以上更改并成功运行Tomcat。

6

Tomcat不需要JDK。Tomcat内置Eclipse JDT编译器,将其作为*.jsp->*.java->*.class流程的一部分来转换JSP到编译后的Servlet。

然而,如果您指定了JAVA_HOME,Tomcat希望该路径指向完整的JDK安装。如果您想使用JRE,则需要设置JRE_HOME而不是JAVA_HOME。


3

我遇到了同样的问题。指定了JRE_HOME后,收到了相同的错误消息。 在删除系统环境变量JAVA_HOME并重新启动计算机后,错误消息仍然存在。 事实证明我的JRE路径实际上是不正确的,这个错误消息只是让人困惑。


0

检查JAVA_HOME是否设置正确,如果您已安装JDK,则创建jre的JRE_HOME,JAVA_HOME将为JDK设置。此外,请在"C:/Progra~1/...""C:/Program Files/..."之间交替使用以确保系统正确识别路径


0

Web容器需要JDK才能支持编译像JSP这样的源代码,因为编译器存在于JDK中,所以需要相同的JDK版本。(这是可能需要JDK的原因之一)


0
将JAVA_HOME设置为系统变量而不是环境变量,重新启动应用程序(Tomcat)。它应该可以正常工作。
或者你可能遇到了与这里讨论的相同问题。

1
那不是他的问题。他的问题是为什么需要JDK。 - Joeri Hendrickx
这只是一个默认消息,当出现错误时会显示。 - Daniel Fanica

0

是的,我们需要JDK才能运行您的需求。由于您提供了.war文件,我们需要使用jar命令从war、jar文件中提取内容。jar命令在JRE中找不到,只有在JDK中才有。如果您愿意,可以检查JDK、JRE。这是我观察到的基本事情之一,除了其他方面。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接