Solr 自定义 RequestHandler ClassNotFoundException
Solr custom RequestHandler ClassNotFoundException
我按照本教程 - http://www.slideshare.net/searchbox-com/develop-a-solr-request-handler-plugin 并在 Netbeans 中构建了所需的 jar 文件,然后将其放入 lib 路径并将请求处理程序添加到 solrconfig.xml:
<requestHandler name="/newendpoint" class="com.searchbox.DemoPlugin">
<lst name="words">
<str name="word">body</str>
<str name="word">fish</str>
<str name="word">dog</str>
</lst>
</requestHandler>
我看到正在加载 jar:
INFO - 2015-02-06 12:32:21.903; org.apache.solr.core.SolrResourceLoader; Adding 'file:/data/solr/lib/DemoPlugin-1.0.jar' to classloader
但是当我尝试重新启动 solr 时出现错误:
ERROR - 2015-02-06 12:39:02.942; org.apache.solr.core.CoreContainer; Error creating core [test]: RequestHandler init failure
org.apache.solr.common.SolrException: RequestHandler init failure
at org.apache.solr.core.SolrCore.<init>(SolrCore.java:873)
at org.apache.solr.core.SolrCore.<init>(SolrCore.java:646)
at org.apache.solr.core.CoreContainer.create(CoreContainer.java:491)
at org.apache.solr.core.CoreContainer.call(CoreContainer.java:255)
at org.apache.solr.core.CoreContainer.call(CoreContainer.java:249)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
Caused by: org.apache.solr.common.SolrException: RequestHandler init failure
at org.apache.solr.core.RequestHandlers.initHandlersFromConfig(RequestHandlers.java:172)
at org.apache.solr.core.SolrCore.<init>(SolrCore.java:792)
... 8 more
Caused by: org.apache.solr.common.SolrException: Error loading class 'com.searchbox.DemoPlugin'
at org.apache.solr.core.SolrResourceLoader.findClass(SolrResourceLoader.java:490)
at org.apache.solr.core.SolrResourceLoader.findClass(SolrResourceLoader.java:421)
at org.apache.solr.core.SolrCore.createInstance(SolrCore.java:543)
at org.apache.solr.core.SolrCore.createRequestHandler(SolrCore.java:616)
at org.apache.solr.core.RequestHandlers.initHandlersFromConfig(RequestHandlers.java:158)
... 9 more
Caused by: java.lang.ClassNotFoundException: com.searchbox.DemoPlugin
at java.net.URLClassLoader.run(URLClassLoader.java:366)
at java.net.URLClassLoader.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at java.net.FactoryURLClassLoader.loadClass(URLClassLoader.java:789)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:274)
at org.apache.solr.core.SolrResourceLoader.findClass(SolrResourceLoader.java:474)
... 13 more
我承认我不是 java 专家所以想知道我是否遗漏了一些明显的东西,或者自教程创建以来机制发生了变化,扩展了 DemoPlugin jar 它具有所需的 com/searchbox/DemoPlugin.class 文件进来了,有点茫然。
感谢任何指点。
Si
我试过本教程,我可以确认它按说明工作。
对于你,我只能假设 jar 没有加载到它应该加载的位置(即使日志说类加载器得到它)。
我已经把罐子放在 {solr.home}/{core.name}/lib.
关于如何将新插件部署到 solar 的更多信息是 here。
尝试使用 solr.xml 文件并在那里准确配置插件的加载位置。
我按照本教程 - http://www.slideshare.net/searchbox-com/develop-a-solr-request-handler-plugin 并在 Netbeans 中构建了所需的 jar 文件,然后将其放入 lib 路径并将请求处理程序添加到 solrconfig.xml:
<requestHandler name="/newendpoint" class="com.searchbox.DemoPlugin">
<lst name="words">
<str name="word">body</str>
<str name="word">fish</str>
<str name="word">dog</str>
</lst>
</requestHandler>
我看到正在加载 jar:
INFO - 2015-02-06 12:32:21.903; org.apache.solr.core.SolrResourceLoader; Adding 'file:/data/solr/lib/DemoPlugin-1.0.jar' to classloader
但是当我尝试重新启动 solr 时出现错误:
ERROR - 2015-02-06 12:39:02.942; org.apache.solr.core.CoreContainer; Error creating core [test]: RequestHandler init failure
org.apache.solr.common.SolrException: RequestHandler init failure
at org.apache.solr.core.SolrCore.<init>(SolrCore.java:873)
at org.apache.solr.core.SolrCore.<init>(SolrCore.java:646)
at org.apache.solr.core.CoreContainer.create(CoreContainer.java:491)
at org.apache.solr.core.CoreContainer.call(CoreContainer.java:255)
at org.apache.solr.core.CoreContainer.call(CoreContainer.java:249)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
Caused by: org.apache.solr.common.SolrException: RequestHandler init failure
at org.apache.solr.core.RequestHandlers.initHandlersFromConfig(RequestHandlers.java:172)
at org.apache.solr.core.SolrCore.<init>(SolrCore.java:792)
... 8 more
Caused by: org.apache.solr.common.SolrException: Error loading class 'com.searchbox.DemoPlugin'
at org.apache.solr.core.SolrResourceLoader.findClass(SolrResourceLoader.java:490)
at org.apache.solr.core.SolrResourceLoader.findClass(SolrResourceLoader.java:421)
at org.apache.solr.core.SolrCore.createInstance(SolrCore.java:543)
at org.apache.solr.core.SolrCore.createRequestHandler(SolrCore.java:616)
at org.apache.solr.core.RequestHandlers.initHandlersFromConfig(RequestHandlers.java:158)
... 9 more
Caused by: java.lang.ClassNotFoundException: com.searchbox.DemoPlugin
at java.net.URLClassLoader.run(URLClassLoader.java:366)
at java.net.URLClassLoader.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at java.net.FactoryURLClassLoader.loadClass(URLClassLoader.java:789)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:274)
at org.apache.solr.core.SolrResourceLoader.findClass(SolrResourceLoader.java:474)
... 13 more
我承认我不是 java 专家所以想知道我是否遗漏了一些明显的东西,或者自教程创建以来机制发生了变化,扩展了 DemoPlugin jar 它具有所需的 com/searchbox/DemoPlugin.class 文件进来了,有点茫然。
感谢任何指点。
Si
我试过本教程,我可以确认它按说明工作。
对于你,我只能假设 jar 没有加载到它应该加载的位置(即使日志说类加载器得到它)。
我已经把罐子放在 {solr.home}/{core.name}/lib.
关于如何将新插件部署到 solar 的更多信息是 here。
尝试使用 solr.xml 文件并在那里准确配置插件的加载位置。