I had encountered following error message while starting my Tomcat server.

[2009-01-16 11:22:19] [1343 prunsrv.c] [debug] Procrun log initialized
[2009-01-16 11:22:19] [info] Procrun (2.0.4.0) started
[2009-01-16 11:22:19] [info] Running Service...
[2009-01-16 11:22:19] [1166 prunsrv.c] [debug] Inside ServiceMain...
[2009-01-16 11:22:19] [info] Starting service...
... [error] The specified module could not be found.
[2009-01-16 11:22:19] [994  prunsrv.c] [error] Failed creating java 
C:\Program Files\Java\jre1.6.0_07\bin\client\jvm.dll
[2009-01-16 11:22:19] [1269 prunsrv.c] [error] ServiceStart returned 1
[2009-01-16 11:22:19] [info] Run service finished.
[2009-01-16 11:22:19] [info] Procrun finished.
[2009-01-16 11:24:41] [1343 prunsrv.c] [debug] Procrun log initialized
[2009-01-16 11:24:41] [info] Procrun (2.0.4.0) started
[2009-01-16 11:24:41] [info] Debugging Service...
[2009-01-16 11:24:41] [1166 prunsrv.c] [debug] Inside ServiceMain...
[2009-01-16 11:24:41] [info] Starting service...
...[174  javajni.c] [error] The specified module could not be found.

After googling, this is usually happen because of missing msvcr71.dll file. However tomcat doesn’t use msvcr71.dll directly, it’s used by the Java Virtual Machine (JVM).

Solution

  1. Copy msvcr71.dll from java’s bin directory to tomcat’s bin folder.
  2. Add java’s bin directory to windows environment variable.
  3. Copy msvcr71.dll from java’s bin directory to windows\system32 folder.
  4. Make sure your tomcat’s pointing to correct jvm.dll folder.

Solution 4 is work for me, my tomcat pointing to C:\Program Files\Java\jre1.6.0_07\bin\client\jvm.dll, but my java’s runtime folder is located at C:\Program Files\Java\jre\bin\client\jvm.dll..what a joke.

Updated, 19-Sept-2009
Here is a similar error, it happened recently


... [174  javajni.c] [error] %1 is not a valid Win32 application.
... [994  prunsrv.c] [error] Failed creating java 
C:\Program Files\Java\jre6\bin\server\jvm.dll
... [1269 prunsrv.c] [error] ServiceStart returned 1

It’s seem server\jvm.dll is not working property, just change it to client\jvm.dll will do.

From


C:\Program Files\Java\jre6\bin\server\jvm.dll

To


C:\Program Files\Java\jre6\bin\client\jvm.dll