Never mind. Found the problem. There was a name collision due to overlap between using Tika's standalone JAR (which packages all of the dependencies into a single JAR) and some Solr deps, such that the wrong classloader was being invoked.

Although, it still does seem weird that two SolrResourceLoader classes get created.

-Grant

On Nov 14, 2008, at 5:24 PM, Grant Ingersoll wrote:

I'm working on SOLR-282. I'm building it out as a contrib. The contrib has some source code implementing an ExtractingReqHandler (ERH) and the Tika library. For testing, I copied the JAR file I create for the contrib and the Tika library into solr/lib and fire up the example, which leads to a NoClassDefFound exception (see [1]) caused by the classloader that is loading the ERH failing to find the Tika dependencies, even though the Tika library is in the lib directory.

So, in debugging this, I noticed that we construct two different SolrResourceLoaders, one right after the other in the CoreContainer at lines 117 and 118. Well, we create a SRL at 117, then the SolrConfig creates one in it's constructor, which gets called at 118.

I'm not sure if this is the problem, but it leads to [2] in my log files, which seems really weird.

Anyone with some classloader magic knowledge have any insight?

I also tried merging my contrib jar and the tika jar together, but that didn't resolve anything.

Thanks,
Grant

[1]
Nov 14, 2008 5:10:29 PM org.apache.solr.common.SolrException log
SEVERE: java.lang.NoClassDefFoundError: org/apache/tika/exception/ TikaException
       at java.lang.Class.forName0(Native Method)
       at java.lang.Class.forName(Class.java:247)
at org .apache .solr.core.SolrResourceLoader.findClass(SolrResourceLoader.java:260) at org .apache .solr.core.SolrResourceLoader.newInstance(SolrResourceLoader.java:281) at org .apache .solr .util.plugin.AbstractPluginLoader.create(AbstractPluginLoader.java:84) at org.apache.solr.core.RequestHandlers $1.create(RequestHandlers.java:153) at org.apache.solr.core.RequestHandlers $1.create(RequestHandlers.java:138) at org .apache .solr .util.plugin.AbstractPluginLoader.load(AbstractPluginLoader.java:141) at org .apache .solr .core.RequestHandlers.initHandlersFromConfig(RequestHandlers.java:170)
       at org.apache.solr.core.SolrCore.<init>(SolrCore.java:527)
at org.apache.solr.core.CoreContainer $Initializer.initialize(CoreContainer.java:120) at org .apache.solr.servlet.SolrDispatchFilter.init(SolrDispatchFilter.java: 69) at org.mortbay.jetty.servlet.FilterHolder.doStart(FilterHolder.java:99)
....
Caused by: java.lang.ClassNotFoundException: org.apache.tika.exception.TikaException
       at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
       at java.security.AccessController.doPrivileged(Native Method)
       at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
       at java.lang.ClassLoader.loadClass(ClassLoader.java:316)
       at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at org .mortbay .jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:375) at org .mortbay .jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:337) at java.lang.ClassLoader.loadClassInternal(ClassLoader.java: 374)


[2] Note, in this case I merged the Tika and the Solr contrib jars together:

INFO: Solr home set to 'solr/'
Nov 14, 2008 5:07:29 PM org.apache.solr.core.SolrResourceLoader createClassLoader INFO: Adding 'file:.../solr-clean/example/solr/lib/apache-solr- extraction-1.4-dev.jar' to Solr classloader Nov 14, 2008 5:08:07 PM org.apache.solr.core.SolrResourceLoader locateInstanceDir
INFO: JNDI not configured for solr (NoInitialContextEx)
Nov 14, 2008 5:08:07 PM org.apache.solr.core.SolrResourceLoader locateInstanceDir INFO: solr home defaulted to 'solr/' (could not find system property or JNDI)
Nov 14, 2008 5:08:07 PM org.apache.solr.core.SolrResourceLoader <init>
INFO: Solr home set to 'solr/'
Nov 14, 2008 5:08:07 PM org.apache.solr.core.SolrResourceLoader createClassLoader INFO: Adding 'file:.../solr-clean/example/solr/lib/apache-solr- extraction-1.4-dev.jar' to Solr classloader
Nov 14, 2008 5:10:15 PM org.apache.solr.core.SolrConfig <init>
INFO: Loaded SolrConfig: solrconfig.xml


Reply via email to