db4o Developer Community

db4o open source object database, native to Java and .NET
Welcome to db4o Developer Community Sign in | Join
in Search
More Search Options

Class Cast Exception - Need input

Last post 02-07-2008, 09:03 PM by nicolas. 4 replies.
Sort Posts: Previous Next
  •  08-20-2007, 09:49 PM 40642

    Class Cast Exception - Need input

    After a major refactoring this exception was thrown.  Classes are on the classpath of the server.  Any tips to where this might lie?  Thanks. 

     

    java.lang.ClassCastException: com.db4o.internal.query.processor.QField cannot be cast to com.db4o.reflect.generic.GenericObject
        at com.db4o.reflect.generic.GenericField.get(Unknown Source)
        at com.db4o.internal.FieldMetadata.getOrCreate(Unknown Source)
        at com.db4o.internal.marshall.ObjectHeaderAttributes1.calculateLengths(Unknown Source)
        at com.db4o.internal.marshall.ObjectHeaderAttributes1.calculateLengths(Unknown Source)
        at com.db4o.internal.marshall.ObjectHeaderAttributes1.<init>(Unknown Source)
        at com.db4o.internal.marshall.ObjectMarshaller1.marshallNew(Unknown Source)
        at com.db4o.internal.ObjectReference.continueSet(Unknown Source)
        at com.db4o.internal.PartialObjectContainer.stillToSet(Unknown Source)
        at com.db4o.internal.PartialObjectContainer.set3(Unknown Source)
        at com.db4o.internal.PartialObjectContainer.set2(Unknown Source)
        at com.db4o.internal.PartialObjectContainer.setAfterReplication(Unknown Source)
        at com.db4o.internal.PartialObjectContainer.setInternal(Unknown Source)
        at com.db4o.internal.ClassMetadata.writeNew(Unknown Source)
        at com.db4o.internal.FieldMetadata.marshall(Unknown Source)
        at com.db4o.internal.marshall.ObjectMarshaller1$6.processField(Unknown Source)
        at com.db4o.internal.marshall.ObjectMarshaller.traverseFields(Unknown Source)
        at com.db4o.internal.marshall.ObjectMarshaller1.marshall(Unknown Source)
        at com.db4o.internal.marshall.ObjectMarshaller1.marshallNew(Unknown Source)
        at com.db4o.internal.ObjectReference.continueSet(Unknown Source)
        at com.db4o.internal.PartialObjectContainer.stillToSet(Unknown Source)
        at com.db4o.internal.PartialObjectContainer.set3(Unknown Source)
        at com.db4o.internal.PartialObjectContainer.set2(Unknown Source)
        at com.db4o.internal.PartialObjectContainer.setAfterReplication(Unknown Source)
        at com.db4o.internal.PartialObjectContainer.setInternal(Unknown Source)
        at com.db4o.internal.ClassMetadata.writeNew(Unknown Source)
        at com.db4o.internal.marshall.UntypedMarshaller1.writeNew(Unknown Source)
        at com.db4o.internal.UntypedFieldHandler.writeNew(Unknown Source)
        at com.db4o.internal.FieldMetadata.marshall(Unknown Source)
        at com.db4o.internal.marshall.ObjectMarshaller1$6.processField(Unknown Source)
        at com.db4o.internal.marshall.ObjectMarshaller.traverseFields(Unknown Source)
        at com.db4o.internal.marshall.ObjectMarshaller1.marshall(Unknown Source)
        at com.db4o.internal.marshall.ObjectMarshaller1.marshallNew(Unknown Source)
        at com.db4o.internal.ObjectReference.continueSet(Unknown Source)
        at com.db4o.internal.PartialObjectContainer.stillToSet(Unknown Source)
        at com.db4o.internal.PartialObjectContainer.set3(Unknown Source)
        at com.db4o.internal.PartialObjectContainer.set2(Unknown Source)
        at com.db4o.internal.PartialObjectContainer.setAfterReplication(Unknown Source)
        at com.db4o.internal.PartialObjectContainer.setInternal(Unknown Source)
        at com.db4o.internal.ClassMetadata.writeNew(Unknown Source)
        at com.db4o.internal.FieldMetadata.marshall(Unknown Source)
        at com.db4o.internal.marshall.ObjectMarshaller1$6.processField(Unknown Source)
        at com.db4o.internal.marshall.ObjectMarshaller.traverseFields(Unknown Source)
        at com.db4o.internal.marshall.ObjectMarshaller1.marshall(Unknown Source)
        at com.db4o.internal.marshall.ObjectMarshaller1.marshallNew(Unknown Source)
        at com.db4o.internal.ObjectReference.continueSet(Unknown Source)
        at com.db4o.internal.PartialObjectContainer.stillToSet(Unknown Source)
        at com.db4o.internal.PartialObjectContainer.set3(Unknown Source)
        at com.db4o.internal.PartialObjectContainer.set2(Unknown Source)
        at com.db4o.internal.PartialObjectContainer.setAfterReplication(Unknown Source)
        at com.db4o.internal.PartialObjectContainer.setInternal(Unknown Source)
        at com.db4o.internal.ClassMetadata.writeNew(Unknown Source)
        at com.db4o.internal.marshall.UntypedMarshaller1.writeNew(Unknown Source)
        at com.db4o.internal.UntypedFieldHandler.writeNew(Unknown Source)
        at com.db4o.internal.FieldMetadata.marshall(Unknown Source)
        at com.db4o.internal.marshall.ObjectMarshaller1$6.processField(Unknown Source)
        at com.db4o.internal.marshall.ObjectMarshaller.traverseFields(Unknown Source)
        at com.db4o.internal.marshall.ObjectMarshaller1.marshall(Unknown Source)
        at com.db4o.internal.marshall.ObjectMarshaller1.marshallNew(Unknown Source)
        at com.db4o.internal.ObjectReference.continueSet(Unknown Source)
        at com.db4o.internal.PartialObjectContainer.stillToSet(Unknown Source)
        at com.db4o.internal.PartialObjectContainer.set3(Unknown Source)
        at com.db4o.internal.PartialObjectContainer.set2(Unknown Source)
        at com.db4o.internal.PartialObjectContainer.setAfterReplication(Unknown Source)
        at com.db4o.internal.PartialObjectContainer.setInternal(Unknown Source)
        at com.db4o.internal.ClassMetadata.writeNew(Unknown Source)
        at com.db4o.internal.FieldMetadata.marshall(Unknown Source)
        at com.db4o.internal.marshall.ObjectMarshaller1$6.processField(Unknown Source)
        at com.db4o.internal.marshall.ObjectMarshaller.traverseFields(Unknown Source)
        at com.db4o.internal.marshall.ObjectMarshaller1.marshall(Unknown Source)
        at com.db4o.internal.marshall.ObjectMarshaller1.marshallNew(Unknown Source)
        at com.db4o.internal.ObjectReference.continueSet(Unknown Source)
        at com.db4o.internal.PartialObjectContainer.stillToSet(Unknown Source)
        at com.db4o.internal.PartialObjectContainer.set3(Unknown Source)
        at com.db4o.internal.PartialObjectContainer.set2(Unknown Source)
        at com.db4o.internal.PartialObjectContainer.setAfterReplication(Unknown Source)
        at com.db4o.internal.PartialObjectContainer.setInternal(Unknown Source)
        at com.db4o.internal.ClassMetadata.writeNew(Unknown Source)
        at com.db4o.internal.FieldMetadata.marshall(Unknown Source)
        at com.db4o.internal.marshall.ObjectMarshaller1$6.processField(Unknown Source)
        at com.db4o.internal.marshall.ObjectMarshaller.traverseFields(Unknown Source)
        at com.db4o.internal.marshall.ObjectMarshaller1.marshall(Unknown Source)
        at com.db4o.internal.marshall.ObjectMarshaller1.marshallNew(Unknown Source)
        at com.db4o.internal.ObjectReference.continueSet(Unknown Source)
        at com.db4o.internal.PartialObjectContainer.stillToSet(Unknown Source)
        at com.db4o.internal.PartialObjectContainer.set3(Unknown Source)
        at com.db4o.internal.PartialObjectContainer.set2(Unknown Source)
        at com.db4o.internal.PartialObjectContainer.setAfterReplication(Unknown Source)
        at com.db4o.internal.PartialObjectContainer.setInternal(Unknown Source)
        at com.db4o.internal.PartialObjectContainer.set(Unknown Source)
        at com.db4o.internal.PartialObjectContainer.set(Unknown Source)
        at com.db4o.internal.PartialObjectContainer.set(Unknown Source)
        at com.db4o.internal.Serializer.marshall(Unknown Source)
        at com.db4o.internal.Serializer.marshall(Unknown Source)
        at com.db4o.internal.cs.ClientObjectContainer.executeQuery(Unknown Source)
        at com.db4o.internal.query.processor.QQueryBase.getQueryResult(Unknown Source)
        at com.db4o.internal.query.processor.QQueryBase.execute(Unknown Source)
        at org.athenian.clienttrack.database.Store.validateUser(Store.java:170)
        at org.athenian.clienttrack.database.Store.login(Store.java:161)
        at org.athenian.clienttrack.housing.Application.login(Application.java:58)
        at org.athenian.clienttrack.housing.Application.start(Application.java:37)

  •  08-21-2007, 03:25 AM 40647 in reply to 40642

    Re: Class Cast Exception - Need input

    Solved.  I moved the class that was loaded to set the classloader for db4o into another plugin from the one I was starting db4o in and it produced the above.  All is fine now.  Thanks.
  •  08-31-2007, 08:30 PM 41129 in reply to 40642

    Re: Class Cast Exception - Need input

    Hi

    i've the same problem,

    did anybody solve the Problem? I saw the problem 5 times in the forum but no one has solved it.

    I use the newest version (6.3) unter linux with java jdk 5.0 or 6.0.

    The problem appears when i try to access a reopened database file.



    Thanks for any suggestion or Links which helps to solve this problem. 

    Best Regards 

    S. Barthel 

  •  08-31-2007, 08:32 PM 41130 in reply to 41129

    Re: Class Cast Exception - Need input

    Sorry don't saw the answer post
  •  02-07-2008, 09:03 PM 46622 in reply to 41130

    Re: Class Cast Exception - Need input

    Put the following line just before opening the database

    Db4o.configure().reflectWith(new JdkReflector(Thread.currentThread().getContextClassLoader()));

    i.e. your code shall look like

    if (null == myDatabase) {
        Db4o.configure().reflectWith(new JdkReflector(Thread.currentThread().getContextClassLoader()));
    }
    myDatabase = Db4o.open(configurationObject, databaseFile);

     

    Note: writing the reflexion instruction into the configurationObject won't work.

    i.e. the following configuration will not take into account the reflection instruction

    Configuration config = Db4o.configure();
    config.reflectWith(new JdkReflector(Thread.currentThread().getContextClassLoader()));
    [...]
    myDatabase = Db4o.openFile(config, file = FILE);

     

    Cordialement,

    Nicolas. 

     

View as RSS news feed in XML