jni problem - destroy jvm and rebuild it

B

Bert Boehne

hi!
i'm busy with jni. i want to start a jvm from my c++ code and call a
java method. that's working so far. but i have the problem that it has
to be possible to destroy the jvm and create afterwards again. i can't
just create the jvm in the main program and let it run until the main
program ends. that's because i'm writing a plug in to an existing program...
i downloaded the source from sun where i found the file jni.cpp. there
are the functions JNI_CreateJavaVM, jni_DestroyJavaVM and so on. also
there is a global variable:

volatile jint num_vm_created = 0; // number of VMs created so far

this variable will be checked at a call of JNI_CreateJavaVM. would it be
possible to set this variable to zero after calling jni_DestroyVM
(jni_DestroyJavaVM doesn't do that)i could create a jvm again.

now, here is my question: does someone know how to reach that variable
to set it to 0 again? or does someone have another idea to do the job?

greats,

bert
 
C

Chris Uppal

Bert said:
i'm busy with jni. i want to start a jvm from my c++ code and call a
java method. that's working so far. but i have the problem that it has
to be possible to destroy the jvm and create afterwards again.

Then, I'm afraid, you are out of luck. It can't be done. (And yes, I agree
that sucks.)

now, here is my question: does someone know how to reach that variable
to set it to 0 again? or does someone have another idea to do the job?

First you should find /why/ Sun have that variable, and work out how to fix
whatever technical problem it is that the variable is protecting against.

-- chris
 
M

Manfred Rosenboom

Hi Bert,

At least up to JDK 1.4.2 this isn't possible!
You have in all JDK versions the function jni_DestroyVM, but you can't
create a new instance of the JVM in the same process after calling this
function :-((

If my memory serves me well, this should be possible with the
Java 5 JVM, but I haven't give it a try and, to be honest,
I doubt that it is really working in Java 5 until I have seen
it working on my machine ;-)

Best,
Manfred
 
B

Bert Boehne

hi Manfred!

i'm using jdk 1.5.0_07. so i think it's still not fixed. :(
i think there will be a very big party when this becomes possible!

greats,

bert
 
C

Chris Uppal

Manfred said:
If my memory serves me well, this should be possible with the
Java 5 JVM, but I haven't give it a try and, to be honest,
I doubt that it is really working in Java 5 until I have seen
it working on my machine ;-)

Just tried it with 1.5, and it still fails.

If this is something that they are thinking of fixing, then that is excellent
news -- but like you, I'll believe it only when I see it (if then).

-- chris
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,769
Messages
2,569,582
Members
45,057
Latest member
KetoBeezACVGummies

Latest Threads

Top