Classpath для пользовательских Solr Transformer - PullRequest
1 голос
/ 19 сентября 2009

Я написал собственный подкласс Transformer для Solr DataImportHandler. Он находится в jar-файле, но я не могу понять, как найти solr, чтобы найти его.

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

Я настроил файл data-config.xml с полным путем к пользовательскому преобразователю:

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

Я пробовал свой jar-файл в каждом каталоге / lib, / dist, который мог найти, что наводило меня на мысль, что это проблема с зависимым файлом Было бы очень хорошо, если бы в журналах указывался фактический класс, который не может быть найден, но они довольно бесполезны. Если я удаляю спецификацию MyTransformer, обработчик данных работает просто отлично.

Ответы [ 2 ]

0 голосов
/ 08 февраля 2010

Я поместил свой собственный файл jar-файла трансформера в solr / lib; тот же каталог, что и файл jetty.jar.

Мне также пришлось поместить сборку и поместить apache-solr-dataimporthandler-1.4.1-dev.jar в тот же каталог solr / lib.

0 голосов
/ 29 января 2010

Я думаю, это связано с загрузчиком вашего класса. (при условии, что вы используете Tomcat: https://sec1.woopra.com/docs/class-loader-howto.html)

Если вы поместите свой jar в «Common» каталог Classloader, тогда все его зависимости также должны быть доступны для этого загрузчика классов. Итак, предположительно, ваши классы Solr находятся в каталоге webapps (т.е. WEB-INF / lib), так как tomcat должен знать, где найти правильный класс. Например, предположим, у вас есть две версии Solr в разных каталогах веб-приложений? какую версию должен использовать Tomcat?

Так что я думаю, что ваше решение - это поставить банку в веб-приложение Solr.

...