On Wed, 18 Mar 2009, Andi Vajda wrote:


A long standing problem with PyLucene and JCC has been the crash one gets when forgetting to call initVM() to boot the embedded Java VM.

After thinking about this some more, it became clear that a Java VM without classes is not very useful and that hence a good place to put a is-there-a-vm-yet check would be in the one place that finds java classes, the one place one must at least go through once, JCCEnv's findClass method.

In rev 755707, I checked in an implementation of this. Getting this to work was not exactly trivial as JCC generated lots of unprotected initializeClass() calls.

I hope I found them all. Please try the latest out and let me know if you can get it to crash without initVM() being called.

  >>> import lucene
  >>> lucene.Document()
  Traceback (most recent call last):
    File "<stdin>", line 1, in <module>
  RuntimeError: initVM() must be called first

If this checks out OK, given that we haven't yet received the required three PMC votes to issue an official release, I'm ready to upload an RC5 into the staging area.

On the heels of the same fix, a failure to find a class because of, say, a CLASSPATH error, also no longer crashes.

Committed in rev 755738.

Andi..

Reply via email to