<div dir="ltr">Thanks,</div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Mar 18, 2015 at 4:32 PM, Johannes Schindelin <span dir="ltr"><<a href="mailto:johannes.schindelin@gmx.de" target="_blank">johannes.schindelin@gmx.de</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi Lee,<br>
<br>
On 2015-03-18 14:47, Lee Kamentsky wrote:<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
I'm programming "monkey see, monkey do" style. I have very little idea what<br>
I'm doing, trying to replicate the logic for mac loading dylibs in<br>
imagej-loader.<br>
<br>
I've gotten pretty far, but at the end, I'm seeing the error,<br>
"JavaNativeFoundation: GetGlobalVM: JNI_GetCreatedJavaVMs() failed to get<br>
any VM" when I start an AWT app.<br>
</blockquote>
<br>
Do you expect a JVM to be running already? If not, you should [create one](<a href="https://github.com/imagej/imagej-launcher/blob/3e061521a/src/main/c/ImageJ.c#L307-L322" target="_blank">https://github.com/<u></u>imagej/imagej-launcher/blob/<u></u>3e061521a/src/main/c/ImageJ.c#<u></u>L307-L322</a>).<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
I am guessing that this is why you dlopened libjli here<br>
<<a href="https://github.com/imagej/imagej-launcher/blob/master/src/main/c/ImageJ.c#L264" target="_blank">https://github.com/imagej/<u></u>imagej-launcher/blob/master/<u></u>src/main/c/ImageJ.c#L264</a>>.<br>
</blockquote>
<br>
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: <a href="https://github.com/imagej/imagej-launcher/blame/master/src/main/c/ImageJ.c#L264" target="_blank">https://github.com/imagej/<u></u>imagej-launcher/blame/master/<u></u>src/main/c/ImageJ.c#L264</a> (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).<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
I do the same, but (so far) with Python's ctypes.CDLL. That doesn't let you<br>
specify RTLD_LAZY as a dlopen mode. So, I think that's the big difference<br>
between how you do things and how I do them. My first question is whether<br>
RTLD_LAZY is needed as the mode. My second question is why you needed to<br>
load libjli.dylib in the first place and, if you might grant me a third<br>
wish, my third question is whether you've seen this error before.<br>
</blockquote>
<br>
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.<br>
<br>
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).<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Thanks in advance, Mr. Wizard.<br>
</blockquote>
<br>
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?<br>
<br>
Ciao,<br>
Dscho<br>
</blockquote></div><br></div>