Thanks Michael while this is not the solution it does give me some clues as
to where to look.

Looking at my over two year old JNI code I see that I do pass a reference to
the JVM as initialization parameter to the C++ code.

In order to find the classes for the callback I do the following

 JNIEnv* env;
 m_jvm->GetEnv(reinterpret_cast<void**>(&env),JNI_VERSION_1_2); // m_jvm is
the cached JVM

Clearly the Java environment I am getting is not the one I thought it was.
And I thought DLL hell was a problem !

Shimon


> I've done no work with JNI, but have read a little on it.
>
> My understanding is that when making calls from native
> to java, the native code often instantiates a new JVM. If
> your are doing this then I would suspect that this is your problem.
>
> Your newly instantied JVM would not have access to the classes
> loaded in the Tomcat JVM instance. Even if you included these in
> your CLASSPATH (as you mentioned with Jetty) then you'd be
> accessing java classes in a JVM seperate from the one that Tomcat
> is using (which is not what I think you want to do).
>
> It seems that you'd somehow need to, first make a java->C++ call
> to your native code to give it a handle to the Tomcat JVM instance,
> and from there use this handle in your native code to access or invoke
> the java classes/objects that you so desire.
>
> Michael LeValle
>



--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to