繁体   English   中英

SOLR 7.4.0例外:java.lang.NoClassDefFoundError:org / apache / solr / handler / dataimport / FieldStreamDataSource

[英]SOLR 7.4.0 exception: java.lang.NoClassDefFoundError: org/apache/solr/handler/dataimport/FieldStreamDataSource

我正在尝试实现自定义的SOLR FieldStreamDataSource。 这是我的Java类的代码:

package MySOLR;

import org.apache.solr.handler.dataimport.*;

public class MyFieldStreamDataSource extends FieldStreamDataSource {

}

我的SOLR安装在C:\\ solr \\ solr-7.4.0中。 所以我在NetBeans项目中添加了以下jar

C:\solr\solr-7.4.0\dist\solr-dataimporthandler-7.4.0.jar

并将其编译到MySOLR.jar

然后,将MySOLR.jar放入C:\\solr\\solr-7.4.0\\server\\lib\\ext然后将以下内容添加到SOLR DIH配置文件中:

...
<dataSource name="fieldStreamDataSource" type="MySOLR.MyFieldStreamDataSource" />
...
<entity name="tika_RTF_NOTES" onError="continue" processor="TikaEntityProcessor" dataField="ts0_tika.RTF_NOTES" dataSource="fieldStreamDataSource">
    <field name="text" column="text" />
</entity>
...

我在SOLR核心的solrconfig.xml文件中添加了以下条目:

<lib dir="C:/solr/solr-7.4.0/contrib/dataimporthandler/lib" regex=".*\.jar" />
<lib dir="C:/solr/solr-7.4.0/dist/" regex="solr-dataimporthandler-\d.*\.jar" />
<!--lib path="C:/solr/solr-7.4.0/dist/solr-dataimporthandler-7.4.0.jar" /-->
<lib dir="C:/solr/solr-7.4.0/contrib/dataimporthandler-extras/lib" regex=".*\.jar" />
<lib dir="C:/solr/solr-7.4.0/dist/" regex="solr-dataimporthandler-extras-\d.*\.jar" />

重新启动我的SOLR实例(Windows服务)后,我尝试通过SOLR Web界面运行DIH。 我在solr.log文件(和Web界面)中收到以下异常:

2019-03-18 11:08:12.164 ERROR (qtp1986417638-24) [   x:iET] o.a.s.s.HttpSolrCall null:java.lang.RuntimeException: java.lang.NoClassDefFoundError: org/apache/solr/handler/dataimport/FieldStreamDataSource
        at org.apache.solr.servlet.HttpSolrCall.sendError(HttpSolrCall.java:662)
        at org.apache.solr.servlet.HttpSolrCall.call(HttpSolrCall.java:530)
        at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:377)
        at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:323)
        at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1634)
        at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:533)
        at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:146)
        at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)
        at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
        at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:257)
        ...

我非常确定我在solrconfig.xml中输入的内容是正确的,因为当我删除这些条目时,我看到SOLR占用的库更少。 我可以在solr.log文件中看到

oascSolrResourceLoader [...]已将...库从路径添加到类加载器:...

我想念什么?

预先感谢,迈克尔

我偶然找到了解决方案。 有两种选择(对我而言):

  1. 将MySOLR.jar放在c:\\ solr \\ solr-7.4.0 \\ contrib \\ dataimporthandler \\ lib中
  2. 将MySOLR.jar放在c:\\ solr \\ solr-7.4.0 \\ dist并在solrconfig.xml中添加对其的引用

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM