我为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就可以正常工作。
答案 0 :(得分:0)
我猜它与你的类加载器有关。 (假设您使用的是Tomcat:https://sec1.woopra.com/docs/class-loader-howto.html)
如果你把你的jar放到“Common”Classloader目录中,那么它的所有依赖关系也需要对该类加载器可用。所以假设您的Solr类位于webapps目录(即WEB-INF / lib)中,那么tomcat应该如何知道在哪里找到合适的类。例如,考虑在不同的webapp目录中有两个版本的Solr? Tomcat应该使用哪个版本?
所以我认为你的解决方案是将你的jar放入Solr webapp。
答案 1 :(得分:0)
我将自定义变换器jar文件放入solr / lib;与jetty.jar文件相同的目录。
我还必须将build并将apache-solr-dataimporthandler-1.4.1-dev.jar放在同一个solr / lib目录中。