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
>