Thanks Andi. am going to try these suggestions out.

On Sat, Oct 18, 2014 at 9:55 PM, Andi Vajda <va...@apache.org> wrote:

>
> On Sat, 18 Oct 2014, Alexander Alex wrote:
>
>  The init file in the pylucene egg. Below is it:
>>
>>
>> import os, sys
>>
>> if sys.platform == 'win32':
>>  from jcc.windows import add_jvm_dll_directory_to_path
>>  add_jvm_dll_directory_to_path()
>>  import jcc, _lucene
>> else:
>>  import _lucene
>>
>> __dir__ = os.path.abspath(os.path.dirname(__file__))
>>
>> class JavaError(Exception):
>>  def getJavaException(self):
>>    return self.args[0]
>>  def __str__(self):
>>    writer = StringWriter()
>>    self.getJavaException().printStackTrace(PrintWriter(writer))
>>    return "\n".join((super(JavaError, self).__str__(), "    Java
>> stacktrace:", str(writer)))
>>
>> class InvalidArgsError(Exception):
>>  pass
>>
>> _lucene._set_exception_types(JavaError, InvalidArgsError)
>>
>> VERSION = "3.6.2"
>> CLASSPATH = [os.path.join(__dir__, "lucene-core-3.6.2.jar"),
>> os.path.join(__dir__, "lucene-analyzers-3.6.2.jar"), os.path.join(__dir__,
>> "lucene-memory-3.6.2.jar"), os.path.join(__dir__,
>> "lucene-highlighter-3.6.2.jar"), os.path.join(__dir__, "extensions.jar"),
>> os.path.join(__dir__, "lucene-queries-3.6.2.jar"), os.path.join(__dir__,
>> "lucene-grouping-3.6.2.jar"), os.path.join(__dir__,
>> "lucene-join-3.6.2.jar"), os.path.join(__dir__, "lucene-facet-3.6.2.jar"),
>> os.path.join(__dir__, "lucene-spellchecker-3.6.2.jar")]
>> CLASSPATH = os.pathsep.join(CLASSPATH)
>> _lucene.CLASSPATH = CLASSPATH
>> _lucene._set_function_self(_lucene.initVM, _lucene)
>>
>> from _lucene import *
>>
>
> Thanks. This looks like the vanilla __init__.py file in the pylucene egg.
> I see no modifications from you for, I quote "path of the dependencies to
> classpath in the init.py file".
>
> To be sure there is no misunderstanding here, this is what I understand
> from you so far:
>   - you downloaded, built and installed PyLucene 3.6.2
>     (with what Python version and what Java version ?)
>   - you then compiled a new class and added it to two JAR files,
>     lucene-core-3.6.2.jar and lucene-analyzers-3.6.2.jar
>     (with that Java version ?, why did you modify two JAR files ?
>      why not create your own JAR file with your extra stuff ?)
>   - you then edited __init__.py to reflect this change but I don't see
>     any change in the file you pasted nor why the change is needed if you
>     just modified existing JAR files (in the right location, inside the
>     PyLucene egg, right ?)
>   - you did not rebuild PyLucene itself after making any of these changes
>
> If this mental picture is correct then this is not the right way to go
> about it. The proper way to modify Lucene Core and then PyLucene is to:
>   - compile and build your new classes using the same version of Java (and
>     Lucene)
>   - create a new JAR file containing your extra stuff
>   - test that it all works with a simple Java program that uses Lucene core
>     and your new code together
>   - _then_ rebuild PyLucene including your new JAR file either by:
>      - adding it to the list of JAR files being wrapped by JCC via --jar
>        in the PyLucene Makefile
>      - OR pass it to JCC via --include instead so that it just becomes part
>        of the new PyLucene egg (ensuring it being inside the egg and on the
>        classpath but no Python wrappers for it are generated)
>
> To get command line argument help from JCC run python -m jcc --help (or
> whatever the correct invocation is for your version of Python).
>
> Andi..
>
>
>  On Sat, Oct 18, 2014 at 12:29 AM, Andi Vajda <va...@apache.org> wrote:
>>
>>
>>> On Sat, 18 Oct 2014, Alexander Alex wrote:
>>>
>>>  ok. I built the class files for the java files attached herein, add them
>>>
>>>> to
>>>> lucene-core-3.6.2.jar at org.apache.lucene.analysis and
>>>> lucene-analyzers-3.6.2.jar at org.apache.lucene.analysis. I then added
>>>> the
>>>> path of the dependencies to classpath in the init.py file.
>>>>
>>>>
>>> What init.py file ?
>>> Can you paste the contents of that file here, please ?
>>>
>>> Andi..
>>>
>>>
>>>  I ran the
>>>
>>>> typical index file using this customized analyzer through PythonAnalyzer
>>>> and got the above error. Meanwhile, I had earlier ran the index file
>>>> using
>>>> standard analyzer before adding the classes and it worked. After running
>>>> the index file with the customized analyzer failed, I tried again with
>>>> the
>>>> standard analyzer which had earlier worked before adding the classes but
>>>> failed this time around with same error message as above. I guess the
>>>> problem has to do with array compatibility in java and python but I
>>>> don't
>>>> really know. Thanks.
>>>>
>>>>
>>>>
>>>> On Fri, Oct 17, 2014 at 7:23 PM, Andi Vajda <va...@apache.org> wrote:
>>>>
>>>>
>>>>  On Fri, 17 Oct 2014, Alexander Alex wrote:
>>>>>
>>>>>  Meanwhile, am using lucene 3.6.2 version. The problem is jvm
>>>>> instantiation
>>>>>
>>>>>  from any python code using lucene caused as a result of the classes I
>>>>>> added
>>>>>> to lucene core.
>>>>>>
>>>>>> ---------- Forwarded message ----------
>>>>>>
>>>>>> I added a customized lucene analyzer class to lucene core in Pylucene.
>>>>>>
>>>>>>
>>>>>>  Please explain in _detail_ the steps you followed to accomplish this.
>>>>> A log of all the commands you ran would be ideal.
>>>>>
>>>>> Thanks !
>>>>>
>>>>> Andi..
>>>>>
>>>>>
>>>>>  This class is google guava as a dependency because of the array
>>>>> handling
>>>>>
>>>>>  function available in com.google.common.collect.Iterables in guava.
>>>>>> When
>>>>>> I tried to index using this analyzer, I got the following error:
>>>>>>
>>>>>> Traceback (most recent call last): File "C:\IndexFiles.py", line 78,
>>>>>> in
>>>>>> lucene.initVM() JavaError: java.lang.NoClassDefFoundError:
>>>>>> org/apache/lucene/analysis/CharArraySet Java stacktrace:
>>>>>> java.lang.NoClassDefFoundError: org/apache/lucene/analysis/
>>>>>> CharArraySet
>>>>>> Caused by: java.lang.ClassNotFoundException:
>>>>>> org.apache.lucene.analysis.CharArraySet at
>>>>>> java.net.URLClassLoader$1.run(URLClassLoader.java:366) at
>>>>>> java.net.URLClassLoader$1.run(URLClassLoader.java:355) at
>>>>>> java.security.AccessController.doPrivileged(Native Method) at
>>>>>> java.net.URLClassLoader.findClass(URLClassLoader.java:354) at
>>>>>> java.lang.ClassLoader.loadClass(ClassLoader.java:425) at
>>>>>> sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) at
>>>>>> java.lang.ClassLoader.loadClass(ClassLoader.java:358)
>>>>>>
>>>>>> Even the example indexing code in Lucene in Action that I tried
>>>>>> earlier
>>>>>> and
>>>>>> worked, when I retried it after adding this class is returning the
>>>>>> same
>>>>>> error above. Am not too familiar with CharArraySet class as I can see
>>>>>> the
>>>>>> problem is from it. How do i handle this? Attached is the java files
>>>>>> whose
>>>>>> class were added to lucene core in pylucene. Thanks
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>
>>

Reply via email to