1

solrで独自のカスタムリクエストハンドラーを作成する必要がありますが、org.apache.solr.common.SolrExceptionのようなエラーが発生します:クラス'QPRequestHandler'の読み込み中にエラーが発生しました

ここで、 QPRequestHandlerは、SOLR3.4にプラグインしたいカスタムハンドラーです。

これが私がこれまでにしたことです:

  1. apache-solr-3.4.0 / example /solr/に新しいディレクトリlibを作成しました

  2. solrconfig.xml(パス:apache-solr-3.4.0 / example / solr / conf / solrconfig.xml)にこの行を追加しました<lib dir="./lib" />

  3. solrconfig.xmlに、次のようなカスタムハンドラーを追加しました。

    <requestHandler name="/mytesthandler" class="QPRequestHandler">
    <!-- initialization args may optionally be defined here -->
     <lst name="defaults">
       <str name="d1">d1 value</str>
     </lst>
     <lst name="invariants">
       <str name="i1">i1 value</str>
     </lst>
    

  4. QPRequestHandlerのサンプルコードは次のとおりです。

    public class QPRequestHandler extends RequestHandlerBase {
    
    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
    
    }
    
    @Override
    public void init(NamedList args) {
      // do nothing
    }
    
     @Override
     public void handleRequestBody(SolrQueryRequest req, SolrQueryResponse rsp) throws Exception {
         rsp.add("key1", "value1");
     }
    }
    
  5. これのJARファイルを作成し、 libディレクトリのパスQPRequestHandler.javaに配置しました。apache-solr-3.4.0/example/solr/lib/

6 solrを再起動した後:次のようなエラーが発生しますorg.apache.solr.common.SolrException: Error loading class 'QPRequestHandler'

問題は、クラスファイルではなくJavaファイルのjarファイルを作成していること、またはパスの問題や構成エラーがあることである可能性があります。

4

1 に答える 1

0

Solr によってロードされる jar ファイルにクラスをパッケージ化する必要があります。
solr依存jarでクラスパスを設定することにより、Javaファイルをコンパイルできます。

于 2011-11-01T13:51:05.830 に答える