I notice that there is another poster with a similar problem to mine,
but he's on Unix and I am on Windows, and I think there may be a
setup/config problem, so I am starting a new thread
I am also getting an error creating the JVM, I am using j2sdk1.4.2_04
with MSDEV 6.0 and have cut'n'pasted about three different pieces of
sample code ( I won't post loads of code here) from working examples
found on the web, they all fail on the call to JNI_CreateJavaVM with an
error code of -1
I am wondering is there are any common setup problems, perhaps having
dlls in the wrong place of environment variables set wrongly, that
might be a cause of this problem?
Here is an example of one code sample I tried that did not work.
Incidentally if I set the version wrong, I get a different error code
(-3, which is to indicate wrong version)
jint ret;
JavaVM* jvm;
JNIEnv* env;
JavaVMInitArgs args;
JavaVMOption options[1];
args.version = JNI_VERSION_1_2;
args.nOptions = 1;
options[0].optionString = "-Djava.class.path=c:\\";
args.options = options;
args.ignoreUnrecognized = JNI_FALSE;
ret = JNI_CreateJavaVM(&jvm, (void **)&env, &args);
Gordon Beaton - 13 Feb 2006 10:05 GMT
> I am wondering is there are any common setup problems, perhaps
> having dlls in the wrong place of environment variables set wrongly,
> that might be a cause of this problem?
The JVM DLL's must be in your PATH, or the program will fail to load
them (and you will be unable to create the JVM).
/gordon

Signature
[ do not email me copies of your followups ]
g o r d o n + n e w s @ b a l d e r 1 3 . s e
Tim - 13 Feb 2006 12:18 GMT
Thanks Gordon -you set me thinking on the right lines; I had placed the
JVM.dll in my project directory, so it was being loaded OK, but it
seems it *has* to run from its default location. So I removed my copy
of the dll and put the correct one on ther path and now it's working
Tim
Chris Uppal - 13 Feb 2006 12:46 GMT
> The JVM DLL's must be in your PATH, or the program will fail to load
> them (and you will be unable to create the JVM).
Or you can load the DLL explicitly by its filename. That's the approach I
favour myself and recommend to others.
I've posted code for that more than once, if the OP wants it then Goodle should
provide.
-- chris