lucene-java-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Paul Chan" <wayofdra...@gmail.com>
Subject Re: ClassCastException when writing to index writer
Date Fri, 03 Oct 2008 22:38:21 GMT
I am using Sun's JRE 1.6.0_02 on Windows XP

Actually...are you sure it would work?  java.util.Vector has the following
clone() method:

public Object <http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html>
*clone*()
{
}

I didn't think you can cast a base class (Vector) to its derived class
(SegmentInfos) in Java?

On Fri, Oct 3, 2008 at 6:16 PM, Michael McCandless <
lucene@mikemccandless.com> wrote:

>
> That's Sun's JRE?  That should be fine, unless there's something seriously
> wrong with it's java.util.Vector implementation.
>
> But, this is an exceptionally strange exception.  Maybe try a different
> version of the JRE?
>
> Any odd JARs on your CLASSPATH?
>
> What hardware/OS?
>
>
> Mike
>
> Paul Chan wrote:
>
>  I am using Java 1.6.0_02.  Is this a problem?
>>
>> On Fri, Oct 3, 2008 at 5:35 PM, Michael McCandless <
>> lucene@mikemccandless.com> wrote:
>>
>>
>>> Which Java environment are you running?
>>>
>>> super.clone() from SegmentInfos should produce a new SegmentInfos object.
>>>
>>> It seems like in your case it's somehow producing a Vector instead?
>>>
>>> Mike
>>>
>>>
>>> Paul Chan wrote:
>>>
>>> Hi Mike,
>>>
>>>>
>>>> I am actually using the Compass Search Engine which in turn makes use of
>>>> Lucene.  They are doing the following in their code:
>>>>
>>>>     IndexWriter indexWriter = new IndexWriter(dir, autoCommit, analyzer,
>>>> create, deletionPolicy);
>>>>
>>>> where autoCommit = false.
>>>>
>>>> In turn, Lucene will do the following:
>>>>
>>>> public class IndexWriter {
>>>>
>>>>   public IndexWriter(Directory d, boolean autoCommit, Analyzer a,
>>>> boolean create, IndexDeletionPolicy deletionPolicy)
>>>>    throws CorruptIndexException, LockObtainFailedException, IOException
>>>> {
>>>>       init(d, a, create, false, deletionPolicy, autoCommit);
>>>>   }
>>>>
>>>>   private void init(Directory d, Analyzer a, final boolean create,
>>>> boolean closeDir,                   IndexDeletionPolicy deletionPolicy,
>>>> boolean autoCommit)
>>>>   {
>>>>      ...
>>>>      ..
>>>>      if (!autoCommit) {
>>>>        rollbackSegmentInfos = (SegmentInfos) segmentInfos.clone();
>>>>      }
>>>>   }
>>>> }
>>>>
>>>> which calls the clone() method that causes the exception because
>>>> autoCommit
>>>> = false.
>>>>
>>>> On Fri, Oct 3, 2008 at 4:54 PM, Michael McCandless <
>>>> lucene@mikemccandless.com> wrote:
>>>>
>>>>
>>>>  Can you describe what led up to this exception?  Ie, what calls you
>>>>> made
>>>>> to
>>>>> Lucene before this.
>>>>>
>>>>> Mike
>>>>>
>>>>>
>>>>> Paul Chan wrote:
>>>>>
>>>>> I think I know what the problem is looking at the code:
>>>>>
>>>>>
>>>>>> In SegmentInfos.java (line 321):
>>>>>>
>>>>>> class SegmentInfos extends Vector
>>>>>> {
>>>>>> public Object clone() {
>>>>>>  SegmentInfos sis = (SegmentInfos) super.clone();
>>>>>>  for(int i=0;i<sis.size();i++) {
>>>>>>    sis.setElementAt(((SegmentInfo) sis.elementAt(i)).clone(), i);
>>>>>>  }
>>>>>>  return sis;
>>>>>> }
>>>>>> }
>>>>>>
>>>>>> We see that it is trying to cast a Vector into SegmentInfos which
>>>>>> explains
>>>>>> the ClassCastException.  This is definitely a bug.
>>>>>>
>>>>>>
>>>>>> On Fri, Oct 3, 2008 at 3:40 PM, Paul Chan <wayofdragon@gmail.com>
>>>>>> wrote:
>>>>>>
>>>>>> Hi,
>>>>>>
>>>>>>
>>>>>>> I am using lucene 2.3.2 and I encounter the following exception
when
>>>>>>> I
>>>>>>> try
>>>>>>> to insert a object into the index.
>>>>>>>
>>>>>>> Caused by: java.lang.ClassCastException: java.util.Vector cannot
be
>>>>>>> cast
>>>>>>> to
>>>>>>> org.apache.lucene.index.SegmentInfos
>>>>>>> at org.apache.lucene.index.SegmentInfos.clone(SegmentInfos.java:321)
>>>>>>> at org.apache.lucene.index.IndexWriter.init(IndexWriter.java:715)
>>>>>>> at org.apache.lucene.index.IndexWriter.<init>(IndexWriter.java:666)
>>>>>>>
>>>>>>> Has Anyone seen this problem before?  What seems to be the problem?
>>>>>>>
>>>>>>> Thanks!
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> ---------------------------------------------------------------------
>>>>> To unsubscribe, e-mail: java-user-unsubscribe@lucene.apache.org
>>>>> For additional commands, e-mail: java-user-help@lucene.apache.org
>>>>>
>>>>>
>>>>>
>>>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: java-user-unsubscribe@lucene.apache.org
>>> For additional commands, e-mail: java-user-help@lucene.apache.org
>>>
>>>
>>>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: java-user-unsubscribe@lucene.apache.org
> For additional commands, e-mail: java-user-help@lucene.apache.org
>
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message