Hi Lee,
On 2015-03-18 14:47, Lee Kamentsky wrote:
I'm programming "monkey see, monkey do" style. I have very little idea
what
I'm doing, trying to replicate the logic for mac loading dylibs in
imagej-loader.
I've gotten pretty far, but at the end, I'm seeing the error,
"JavaNativeFoundation: GetGlobalVM: JNI_GetCreatedJavaVMs() failed to
get
any VM" when I start an AWT app.
Do you expect a JVM to be running already? If not, you should [create
one](https://github.com/imagej/imagej-launcher/blob/3e061521a/src/main/c/ImageJ.c#L307-L322).
I am guessing that this is why you dlopened libjli here
<https://github.com/imagej/imagej-launcher/blob/master/src/main/c/ImageJ.c#L264>.
Heh, I have to admit that I did not remember at all why I did that.
Happily, even I learned to write kick-ass commit messages, and I also
learned the awesomeness of the `Blame` button on GitHub:
https://github.com/imagej/imagej-launcher/blame/master/src/main/c/ImageJ.c#L264
(I vaguely remember writing that commit message after spending something
between twenty and thirty super-focused hours on hunting down this bug,
that was not really fun, that one hunt).
I do the same, but (so far) with Python's ctypes.CDLL. That doesn't let
you
specify RTLD_LAZY as a dlopen mode. So, I think that's the big
difference
between how you do things and how I do them. My first question is
whether
RTLD_LAZY is needed as the mode. My second question is why you needed
to
load libjli.dylib in the first place and, if you might grant me a third
wish, my third question is whether you've seen this error before.
The JLI library is only needed for forward compatibility, so that MacOSX
does not annoy the user by a "Do you want to install Java 6?" popup.
And yes, I have seen an error like that before, but only when trying to
attach to a running JVM from within Matlab (Matlab's very own GUI is
written in Java... so there is already a JVM running in a Matlab
instance although it is a bit tricky to get at it under certain
circumstances, but it is impossible to run two Oracle JVMs in the same
process in any case).
Thanks in advance, Mr. Wizard.
Sorry, oh ye mighty Python God, I fear my input was not really helpful
to your cause. But maybe you have a project for me to clone, with
instructions that might let this poor Python pilgrim reproduce the
issue?
Ciao,
Dscho
_______________________________________________
ImageJ-devel mailing list
ImageJ-devel@imagej.net
http://imagej.net/mailman/listinfo/imagej-devel