2009-09-19 3 views
1

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

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

Я настроил файл данных config.xml с указанием полного пути пользовательского трансформатора:

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

Я попытался мой файл банку в каждом/Lib, каталог/расстояние I может найти, что привело меня к мысли, что это проблема с зависимым файлом. Было бы очень приятно, если бы журналы отображали фактический класс, который не может быть найден, но они довольно бесполезны. Если я удалю спецификацию MyTransformer, обработчик dataimport прекрасно работает.

+1

Похоже, что ваш webapp не может найти базовый класс (org.apache.solr.handler.dataimport.Transformer) вашего собственного класса. – jeje

+0

Да, это, очевидно, проблема. Но как я могу это исправить? – Geordie

+0

Решена ли эта проблема? Если да, то как это разрешено? Я запускаю solr, используя start, jar из примера каталога – Ravi

ответ

0

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

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

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

+0

Что делать, если solr запускается с использованием причала, jar? – Ravi

+0

Спустя несколько минут после моего предыдущего сообщения ошибка класса не найдена, сбросив кувшин трансформатора custome в каталог /lib/*. Я использую с приемом start.jar mode – Ravi

0

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

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

+0

Вы имеете в виду, что вы восстановили apache-solr-dataimporthandler-1.4.1-dev.jar? Почему и что включено в новую сборку? – Ravi

+0

Спустя несколько минут после моего предыдущего сообщения ошибка класса не найдена, если вы сбросите кувшин трансформатора custome в каталог /lib/*. Я использую режим запуска start.jar – Ravi