java - Solr自定义RequestHandler ClassNotFoundException

标签 java solr

我正在关注本教程 - 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$1.call(CoreContainer.java:255)
        at org.apache.solr.core.CoreContainer$1.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$1.run(URLClassLoader.java:366)
        at java.net.URLClassLoader$1.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 文件,所以我有点不知所措。

任何指示表示赞赏。

最佳答案

我已经尝试过本教程,并且可以确认它按说明工作。

对于你来说,我只能假设 jar 没有加载到它应该加载的地方(即使日志说类加载器获取了它)。

我已将 jar 放在 {solr.home}/{core.name}/lib 中。

有关如何将新插件部署到太阳能中的更多信息是 here .

尝试使用 solr.xml 文件并准确配置插件的加载位置。

关于java - Solr自定义RequestHandler ClassNotFoundException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28366112/

相关文章:

java - 如何确保只有一个 Java 应用程序实例在运行?

java - 如何使用JPMML-Android实现PMML机器学习模型?

c# - 如何在 Web API 中维护请求的状态或队列

Solr CDCR(跨数据中心复制)目标及其提交

solr - 在 Solr 上快速读取或更新数亿个关系

tomcat - 在 dspace 中配置 Solr -home 参数并使更改生效

java - list 合并失败,无法构建应用程序

java - 如何对扩展/继承第 3 方类的类进行单元测试

Java:分割函数的默认值

Solr 同步数据复制可立即提供搜索