Hello Sebastian.
thanks for your comments.
On 18.04.2014 16:24, Sebastian Nagel wrote:
Hi Harald,
Would it be a viable workaround to just remove the old solrj from the lib
directory?
Just to verify: I don't see any solrj in lib/ in Nutch 1.8 (checked tar bin
package).
There is only:
apache-nutch-1.8/plugins/indexer-solr/solr-solrj-3.4.0.jar
There should be no solrj.jar in lib/. If there is one it might help to remove
it.
My naming was a bit lax. I am talking about solr-solrj*.jar and
conflicts between the 3.4.0 provided in lib and the one I need, some 4.x.
The solution would be a class loader which does not obey the default "ask parent
first" protocol.
Is there such a ClassLoader available for Nutch?
That's interesting. My understanding is that the "local" libs of the plugin
come first.
Otherwise it would be impossible for a plugin to require another library version
as one of Nutch's main classes. See
https://wiki.apache.org/nutch/WhatsTheProblemWithPluginsAndClass-loading
When I look at the source code of the PluginClassLoader, it is nothing
but a URLClassLoader with a constructor calling super(...). Looking at
the documentation of ClassLoader
(http://docs.oracle.com/javase/7/docs/api/java/lang/ClassLoader.html),
it says:
"When requested to find a class or resource, a ClassLoader instance will
delegate the search for the class or resource to its parent class loader
before attempting to find the class or resource itself."
To me this sounds as if the statement in the wiki is just wrong, yet I
am surprised that nobody noticed this before. Maybe I am missing something?
Harald.
Sebastian
On 04/17/2014 12:56 PM, Harald Kirsch wrote:
Hi,
I am writing a plugin to communicate with the most recent version of Solr. I
add the respective
solrj-jar to the plugin as a library.
However, due to standard class resolution of the JVM, the parent ClassLoader is
asked first. As a
result, classes from the old solrj-jar which comes with Nutch 1.8 are loaded.
The solution would be a class loader which does not obey the default "ask parent
first" protocol. Is
there such a ClassLoader available for Nutch?
Would it be a viable workaround to just remove the old solrj from the lib
directory?
Harald Kirsch
--
Harald Kirsch
Raytion GmbH
Kaiser-Friedrich-Ring 74
40547 Duesseldorf
Fon +49-211-550266-0
Fax +49-211-550266-19
http://www.raytion.com