You are viewing a plain text version of this content. The canonical link for it is here.
Posted to solr-user@lucene.apache.org by Stefanie Scherzinger <st...@google.com> on 2010/11/23 18:28:29 UTC

problems with class loaders when adding new FieldType subclass

Hi,

I am trying to define a custom FieldType for SOLR 1.4.1.

To this end, I created the JAR file TestType.jar, I added a lib path in
solrconfig.xml so that this JAR file
as well as apache-solr-core-1.4.1.jar  and lucene-core-2.9.3.jar are
included.

I then edited schema.xml and defined my new type:
    <fieldType name="myloc" class="afg.TestType" sortMissingLast="true"
omitNorms="true"/>

Starting up SOLR, I see that my classes have been loaded successfully:

INFO: Adding
'file:/home/steffis/solr/apache-solr-1.4.1/my_jars/lucene-core-2.9.3.jar' to
classloader
Nov 23, 2010 5:26:27 PM org.apache.solr.core.SolrResourceLoader
replaceClassLoader
INFO: Adding
'file:/home/steffis/solr/apache-solr-1.4.1/my_jars/TestType.jar' to
classloader
Nov 23, 2010 5:26:27 PM org.apache.solr.core.SolrResourceLoader
replaceClassLoader
INFO: Adding 'file:/home/steffis/solr/apache-solr-1.4.1/my_jars/META-INF/'
to classloader
Nov 23, 2010 5:26:27 PM org.apache.solr.core.SolrResourceLoader
replaceClassLoader

But when schema.xml is processed, I get a load error. Now superclass
FieldType of TestType cannot be found.

INFO: created pdate: org.apache.solr.schema.DateField
Nov 23, 2010 6:26:13 PM org.apache.solr.servlet.SolrDispatchFilter init

SEVERE: Could not start SOLR. Check solr/home property
java.lang.NoClassDefFoundError: org/apache/solr/schema/FieldType
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:634)
    at
java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:277)
    at java.net.URLClassLoader.access$000(URLClassLoader.java:73)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:212)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
    at
org.mortbay.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:375)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:314)
    at java.net.FactoryURLClassLoader.loadClass(URLClassLoader.java:615)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:264)
    at
org.apache.solr.core.SolrResourceLoader.findClass(SolrResourceLoader.java:359)
    at
org.apache.solr.core.SolrResourceLoader.newInstance(SolrResourceLoader.java:390)
    at org.apache.solr.schema.IndexSchema$1.create(IndexSchema.java:419)
    at org.apache.solr.schema.IndexSchema$1.create(IndexSchema.java:447)
    at
org.apache.solr.util.plugin.AbstractPluginLoader.load(AbstractPluginLoader.java:141)
    at org.apache.solr.schema.IndexSchema.readSchema(IndexSchema.java:456)
    at org.apache.solr.schema.IndexSchema.<init>(IndexSchema.java:95)
    at org.apache.solr.core.SolrCore.<init>(SolrCore.java:520)
    at
org.apache.solr.core.CoreContainer$Initializer.initialize(CoreContainer.java:137)
    at
org.apache.solr.servlet.SolrDispatchFilter.init(SolrDispatchFilter.java:83)
    at org.mortbay.jetty.servlet.FilterHolder.doStart(FilterHolder.java:99)
    at
org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:40)
    at
org.mortbay.jetty.servlet.ServletHandler.initialize(ServletHandler.java:594)
    at org.mortbay.jetty.servlet.Context.startContext(Context.java:139)
    at
org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1218)
    at
org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:500)
    at
org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:448)
    at
org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:40)
    at
org.mortbay.jetty.handler.HandlerCollection.doStart(HandlerCollection.java:147)
    at
org.mortbay.jetty.handler.ContextHandlerCollection.doStart(ContextHandlerCollection.java:161)
    at
org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:40)
    at
org.mortbay.jetty.handler.HandlerCollection.doStart(HandlerCollection.java:147)
    at
org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:40)
    at
org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:117)
    at org.mortbay.jetty.Server.doStart(Server.java:210)
    at
org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:40)
    at org.mortbay.xml.XmlConfiguration.main(XmlConfiguration.java:929)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:616)
    at org.mortbay.start.Main.invokeMain(Main.java:183)
    at org.mortbay.start.Main.start(Main.java:497)
    at org.mortbay.start.Main.main(Main.java:115)
Caused by: java.lang.ClassNotFoundException:
org.apache.solr.schema.FieldType
    at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
    ... 50 more

Is this a known problem? What can I do to fix this?

Cheers,
Steffi

Re: problems with class loaders when adding new FieldType subclass

Posted by Erick Erickson <er...@gmail.com>.
Does this help? http://wiki.apache.org/solr/SolrPlugins

See especially "How to load plugins"...

Best
Erick

On Tue, Nov 23, 2010 at 12:28 PM, Stefanie Scherzinger
<st...@google.com>wrote:

> Hi,
>
> I am trying to define a custom FieldType for SOLR 1.4.1.
>
> To this end, I created the JAR file TestType.jar, I added a lib path in
> solrconfig.xml so that this JAR file
> as well as apache-solr-core-1.4.1.jar  and lucene-core-2.9.3.jar are
> included.
>
> I then edited schema.xml and defined my new type:
>    <fieldType name="myloc" class="afg.TestType" sortMissingLast="true"
> omitNorms="true"/>
>
> Starting up SOLR, I see that my classes have been loaded successfully:
>
> INFO: Adding
> 'file:/home/steffis/solr/apache-solr-1.4.1/my_jars/lucene-core-2.9.3.jar'
> to
> classloader
> Nov 23, 2010 5:26:27 PM org.apache.solr.core.SolrResourceLoader
> replaceClassLoader
> INFO: Adding
> 'file:/home/steffis/solr/apache-solr-1.4.1/my_jars/TestType.jar' to
> classloader
> Nov 23, 2010 5:26:27 PM org.apache.solr.core.SolrResourceLoader
> replaceClassLoader
> INFO: Adding 'file:/home/steffis/solr/apache-solr-1.4.1/my_jars/META-INF/'
> to classloader
> Nov 23, 2010 5:26:27 PM org.apache.solr.core.SolrResourceLoader
> replaceClassLoader
>
> But when schema.xml is processed, I get a load error. Now superclass
> FieldType of TestType cannot be found.
>
> INFO: created pdate: org.apache.solr.schema.DateField
> Nov 23, 2010 6:26:13 PM org.apache.solr.servlet.SolrDispatchFilter init
>
> SEVERE: Could not start SOLR. Check solr/home property
> java.lang.NoClassDefFoundError: org/apache/solr/schema/FieldType
>    at java.lang.ClassLoader.defineClass1(Native Method)
>    at java.lang.ClassLoader.defineClass(ClassLoader.java:634)
>    at
> java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
>    at java.net.URLClassLoader.defineClass(URLClassLoader.java:277)
>    at java.net.URLClassLoader.access$000(URLClassLoader.java:73)
>    at java.net.URLClassLoader$1.run(URLClassLoader.java:212)
>    at java.security.AccessController.doPrivileged(Native Method)
>    at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
>    at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
>    at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
>    at
>
> org.mortbay.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:375)
>    at java.lang.ClassLoader.loadClass(ClassLoader.java:314)
>    at java.net.FactoryURLClassLoader.loadClass(URLClassLoader.java:615)
>    at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
>    at java.lang.Class.forName0(Native Method)
>    at java.lang.Class.forName(Class.java:264)
>    at
>
> org.apache.solr.core.SolrResourceLoader.findClass(SolrResourceLoader.java:359)
>    at
>
> org.apache.solr.core.SolrResourceLoader.newInstance(SolrResourceLoader.java:390)
>    at org.apache.solr.schema.IndexSchema$1.create(IndexSchema.java:419)
>    at org.apache.solr.schema.IndexSchema$1.create(IndexSchema.java:447)
>    at
>
> org.apache.solr.util.plugin.AbstractPluginLoader.load(AbstractPluginLoader.java:141)
>    at org.apache.solr.schema.IndexSchema.readSchema(IndexSchema.java:456)
>    at org.apache.solr.schema.IndexSchema.<init>(IndexSchema.java:95)
>    at org.apache.solr.core.SolrCore.<init>(SolrCore.java:520)
>    at
>
> org.apache.solr.core.CoreContainer$Initializer.initialize(CoreContainer.java:137)
>    at
> org.apache.solr.servlet.SolrDispatchFilter.init(SolrDispatchFilter.java:83)
>    at org.mortbay.jetty.servlet.FilterHolder.doStart(FilterHolder.java:99)
>    at
> org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:40)
>    at
>
> org.mortbay.jetty.servlet.ServletHandler.initialize(ServletHandler.java:594)
>    at org.mortbay.jetty.servlet.Context.startContext(Context.java:139)
>    at
>
> org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1218)
>    at
> org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:500)
>    at
> org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:448)
>    at
> org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:40)
>    at
>
> org.mortbay.jetty.handler.HandlerCollection.doStart(HandlerCollection.java:147)
>    at
>
> org.mortbay.jetty.handler.ContextHandlerCollection.doStart(ContextHandlerCollection.java:161)
>    at
> org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:40)
>    at
>
> org.mortbay.jetty.handler.HandlerCollection.doStart(HandlerCollection.java:147)
>    at
> org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:40)
>    at
> org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:117)
>    at org.mortbay.jetty.Server.doStart(Server.java:210)
>    at
> org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:40)
>    at org.mortbay.xml.XmlConfiguration.main(XmlConfiguration.java:929)
>    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>    at
>
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>    at
>
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>    at java.lang.reflect.Method.invoke(Method.java:616)
>    at org.mortbay.start.Main.invokeMain(Main.java:183)
>    at org.mortbay.start.Main.start(Main.java:497)
>    at org.mortbay.start.Main.main(Main.java:115)
> Caused by: java.lang.ClassNotFoundException:
> org.apache.solr.schema.FieldType
>    at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
>    at java.security.AccessController.doPrivileged(Native Method)
>    at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
>    at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
>    at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
>    ... 50 more
>
> Is this a known problem? What can I do to fix this?
>
> Cheers,
> Steffi
>