Hello,
I try to create a Java virtual machine in a C++
application (Windows XP). I have installed
jdk1.5.0_08 and I am sure, that my application
loads the appropriate jvm.dll. Here is my simple
code, I receive always -1:
...
JavaVMOption options[2];
options[0].optionString = "-Djava.compiler=NONE";
options[1].optionString = "-Djava.class.path=.";
JavaVMInitArgs args;
args.version = JNI_VERSION_1_4;
args.nOptions = 2;
args.options = options;
args.ignoreUnrecognized = JNI_FALSE;
...
response = JNI_CreateJavaVM(&mJvm, (void**)&mEnv, &args);
...
Can you please say me what is wrong?!
Thanks,
Anahita
Manfred Rosenboom - 22 Nov 2006 15:30 GMT
IMHO the option -Djava.compiler=NONE is no longer valid.
You can test it by using the line
args.ignoreUnrecognized = JNI_TRUE;
instead of
args.ignoreUnrecognized = JNI_FALSE;
santiago538@yahoo.com - 22 Nov 2006 15:38 GMT
a...@dsa-ac.de wrote:
> Hello,
>
[quoted text clipped - 22 lines]
> Thanks,
> Anahita
I don't think more than one JavaVM instance can be created per process.
You can use JNI_GetCreatedJavaVMs to determine if you already have one
created, which you should if you're calling a native function from Java.
aa@dsa-ac.de - 22 Nov 2006 16:12 GMT
Hello,
here my actual code after your corrections:
...
JavaVMOption options[1];
options[1].optionString = "-Djava.class.path=.";
JavaVMInitArgs args;
args.version = JNI_VERSION_1_4;
args.nOptions =2;
args.options = options;
args.ignoreUnrecognized = JNI_TRUE;
jsize maxNoOfVMs = 1;
jsize actualNoOfVMs;
response = JNI_GetCreatedJavaVMs(&mJvm, maxNoOfVMs, &actualNoOfVMs);
if (JNI_OK == response && 0 == actualNoOfVMs)
response = JNI_CreateJavaVM(&mJvm, (void**)&mEnv, &args);
...
I get still -1. I could debug in the meantime
depper and I see that the problem is in the 'unlock'
method. It is coming originally from 'HeapAlloc'
method of 'malloc.c' file. Shoud I set the heap size?
Have you any idea?
Thanks,
Anahita