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 を「共通」クラスローダー ディレクトリに配置する場合、その依存関係はすべて、そのクラスローダーでも利用できる必要があります。したがって、おそらく Solr クラスは webapps ディレクトリ (つまり、WEB-INF/lib) にあるので、Tomcat はどのようにして適切なクラスを見つける場所を知る必要があるのでしょうか。たとえば、異なる webapp ディレクトリに 2 つのバージョンの Solr があるとします。Tomcat はどのバージョンを使用する必要がありますか?

だから、あなたの解決策はあなたの瓶をSolr webappに入れることだと思います。

于 2010-01-28T21:10:00.257 に答える
0

カスタム Transformer jar ファイルを solr/lib に配置しました。jetty.jar ファイルと同じディレクトリ。

また、ビルドを配置し、apache-solr-dataimporthandler-1.4.1-dev.jar を同じ solr/lib ディレクトリに配置する必要がありました。

于 2010-02-08T03:18:24.620 に答える