1

我为 Solr DataImportHandler 编写了一个自定义 Transformer 子类。它在一个 jar 文件中,但我不知道如何让 solr 找到它。

java.lang.NoClassDefFoundError: org/apache/solr/handler/dataimport/Transformer

我已经使用自定义转换器的完整路径配置了 data-config.xml 文件:

transformer="RegexTransformer,DateFormatTransformer,com.mycompany.xform.MyTransformer"

我已经在我能找到的每个 /lib、/dist 目录中尝试了我的 jar 文件,这让我相信这是依赖文件的问题。如果日志表明无法找到实际的类,那就太好了,但它们非常无用。如果我删除 MyTransformer 规范,dataimporthandler 就可以正常工作。

4

2 回答 2

0

我猜它与你的类加载器有关。(假设您使用的是 Tomcat:https ://sec1.woopra.com/docs/class-loader-howto.html )

如果您将 jar 放入“Common”类加载器目录,那么它的所有依赖项也需要对该类加载器可用。所以大概你的 Solr 类在 webapps 目录中(即 WEB-INF/lib),那么 tomcat 应该如何知道在哪里可以找到正确的类。例如,假设您在不同的 webapp 目录中有两个版本的 Solr?Tomcat应该使用哪个版本?

所以我认为你的解决方案是将你的 jar 放入 Solr webapp。

于 2010-01-28T21:10:00.257 回答
0

我将自定义转换器 jar 文件放入 solr/lib;与 jetty.jar 文件相同的目录。

我还必须将 build 和 apache-solr-dataimporthandler-1.4.1-dev.jar 放在同一个 solr/lib 目录中。

于 2010-02-08T03:18:24.620 回答