“jvm.dll either does not exist at specified location, or could not be loaded.”

When using shared memory, you get an exception and the message “jvm.dll either does not exist at specified location, or could not be loaded.”  This only happens when using JDK/JRE 6 and 7.

The problem is due to a bug introduced in JRE 6 and that remains in JRE 7.  Previously, when a custom launcher was used to launch jvm.dll (that is, something other than java.exe or javaw.exe), all necessary dlls were found and loaded, including the Microsoft C runtime library msvcr71.dll, which was found in the JDK/JRE’s bin folder. Starting with JDK/JRE 6, jvm.dll doesn’t look there, but rather looks in a list of folders including the folder in which the application resides or WindowsSystem32.  If msvcr71.dll is not found in any of the places it looks, you will see this exception. JRE 7 manifests the same bug, but the required library is msvcr100.dll.

To fix this exception for JDK/JRE 6, place a copy of msvcr71.dll (which you will find elsewhere on your machine, including in the bin directory of your JDK/JRE) in the folder in which your .NET application (the one using JNBridgePro and shared memory) resides, or place it in WindowsSystem32. If the JRE is 32-bit and the platform is 64-bit, then place the library in WindowsSysWow64.  For JDK/JRE 7, the required library is msvcr100.dll.

http://www.duckware.com/tech/java6msvcr71.html provides a very extensive discussion of this issue.