无法configurationtomcat 7使用自己的JDK

我有以下configurationtomcat 7在Windows上作为服务运行的问题。

更具体地说,tomcat是安装在我们客户的服务器上的Web应用程序的一部分,它必须具有其所有的依赖关系。

在这种情况下,tomcat依赖于Java JDK / JRE,因此我使用它的jre下载了一个独立的jdk(版本1.7u21),并将其放置在tomcat文件夹中。

所以现在我的目录树是这样的:

tomcat7 - bin - conf - jdk - jre - logs - temp - webapps - work 

然后,我使用该命令将其作为服务进行安装

 tomcat\bin\service.bat install 

并且在jvm模式下安装没有问题。

请注意,我修改了service.bat文件,以便正确设置所有需要的variables,即CATALINA_HOME,CATALINA_BASE,JAVA_HOME和JRE_HOME,最后两个指向内部jdk / jre。

但是,如果我尝试启动该服务,则会收到一条错误消息,指出无法启动服务并引用错误代码1。

看着tomcat日志,它说:

 [2013-05-22 12:22:09] [info] [ 5392] Commons Daemon procrun (1.0.15.0 32-bit) started [2013-05-22 12:22:10] [info] [ 5392] Running 'AGEws2Tomcat7' Service... [2013-05-22 12:22:10] [info] [ 2764] Starting service... [2013-05-22 12:22:10] [error] [ 2764] %1 is not a valid Win32 application. [2013-05-22 12:22:10] [error] [ 2764] Failed creating java C:\AGEws\tomcat7\jdk\jre\bin\server\jvm.dll [2013-05-22 12:22:10] [error] [ 2764] %1 is not a valid Win32 application. [2013-05-22 12:22:10] [error] [ 2764] ServiceStart returned 1 [2013-05-22 12:22:11] [error] [ 2764] %1 is not a valid Win32 application. [2013-05-22 12:22:11] [info] [ 5392] Run service finished. [2013-05-22 12:22:11] [info] [ 5392] Commons Daemon procrun finished 

我试着用googlesearch一下关于Failed creating java的部分Failed creating java ,我发现了一些关于.dll文件可能的依赖关系的信息,但是我不知道我应该把它放在哪里,如果这确实是问题。

我也尝试在java模式下安装服务,它的工作原理, 使用我的电脑自己的JVM而不是内部的,而我需要它使用内部的。

为了使tomcat能够在jvm模式下正常工作,使用自己的jdk / jre,我能做些什么?

请注意,我们的web应用程序用于发布tomcat 5,它在jvm模式下工作得很好。

最后,我发现解决scheme是将启动和停止模式设置为java同时提供一个明确的JAVA_HOME选项

 --JavaHome /path/to/internal/jdk 

修改后的服务工作正常,即使在java模式,而不是旧的服务用于jvm模式。

为了澄清Matteo的答案(并帮助那些不太熟悉Java世界的Windows用户),我们在64位Windows Server 2012(非R2)上使用Tomcat 8时出现了完全相同的问题。 我们正在使用/configurationIBM Rational DOORS Help 9.6.1 – 尽pipe我们在尝试在相对较新的64位版本的Windows上进行configuration时,已经看到了大多数IBM Java / Tomcat样式的产品。

我们必须使用以下命令更新位于Tomcat安装目录中的service.bat文件:

 --StartMode java ^ --StopMode java ^ --JavaHome "C:\Program Files (x86)\Java\jre7" ^ 

启动/停止选项从“jvm”更改,JavaHome选项是configuration文件的新增内容。 然后通过以下方式执行服务的安装:

 service.bat install <service name> 

在我们的例子中,服务名称是DOORS_Help。 我们有一个64位的Tomcat安装和一个32位的JRE安装,显然然后一起工作 – 这是由供应商提供的。

编辑:另一个选项似乎是安装Tomcat 之前手动设置JRE_HOME和JAVA_HOME环境variables。 否则,您将需要重新安装Windows服务。 我知道这种矛盾的原始post,但似乎并不是所有的Tomcat安装都是一样的!