web-dev-qa-db-ja.com

SolrDataImportHandlerが見つかりません

私はTomcat6.0.26で Solr 3.3. を使用しています。 Solrを正常にインストールでき、http:/ localhost:8084/solr/adminを使用してそのWebインターフェイスにアクセスすることもできました。

次に、dataimporthandlerを使用して、データベースのデータにインデックスを付けたいと思います。solrconfigに以下を追加しました。

<requestHandler name="/dataimport" class="org.Apache.solr.handler.dataimport.DataImport
 Handler">
<lst name="defaults">
<str name="config">data-config.xml</str>
</lst>
</requestHandler> 

同じディレクトリにdata-config.xmlも作成しました。

私のsolrconfigファイルにはdataimport用の次の場所があります

  <lib dir="../../dist/" regex="Apache-solr-dataimporthandler-\d.*\.jar" /> 

そして、dataimporthandler.jarファイルが次のパスC:\ web\solr\example\lib\Apache-solr-3.3.0\distのdistフォルダーに存在することを確認しました。

しかし、http:/ localhost:8084/solr/dataimportまたはhttp:/ localhost:8084/solr/admin/dataimportと入力すると、リソースが利用できないと表示されます。 Tomcatの設定に問題があると思ったので、Tomcatを停止し、Java -jarstart.jarを使用してcmdからSolrを起動しようとしました。次のエラーが発生します。

HTTP ERROR 500
Problem accessing /solr/. Reason:
Severe errors in solr configuration.
Check your log files for more detailed information on what may be wrong.
If you want solr to continue after configuration errors, change: 

<abortOnConfigurationError>false</abortOnConfigurationError>

in solr.xml

-------------------------------------------------------------
org.Apache.solr.common.SolrException: Error loading class    
    'org.Apache.solr.handler.dataimport.DataImportHandler'
at org.Apache.solr.core.SolrResourceLoader.findClass(SolrResourceLoader.Java:389)
at org.Apache.solr.core.SolrCore.createInstance(SolrCore.Java:423)
at org.Apache.solr.core.SolrCore.createRequestHandler(SolrCore.Java:459)
at  
  org.Apache.solr.core.RequestHandlers.initHandlersFromConfig(RequestHandlers.Java:157)
at org.Apache.solr.core.SolrCore.<init>(SolrCore.Java:563)
at org.Apache.solr.core.CoreContainer.create(CoreContainer.Java:463)
at org.Apache.solr.core.CoreContainer.load(CoreContainer.Java:316)
at org.Apache.solr.core.CoreContainer.load(CoreContainer.Java:207)
at 
   org.Apache.solr.core.CoreContainer$Initializer.initialize(CoreContainer.Java:130)
at org.Apache.solr.servlet.SolrDispatchFilter.init(SolrDispatchFilter.Java:94)
at org.mortbay.jetty.servlet.FilterHolder.doStart(FilterHolder.Java:97)
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.Java:50)
at org.mortbay.jetty.servlet.ServletHandler.initialize(ServletHandler.Java:713)
at org.mortbay.jetty.servlet.Context.startContext(Context.Java:140)
at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.Java:1282)
at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.Java:518)
at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.Java:499)
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.Java:50)
at org.mortbay.jetty.handler.HandlerCollection.doStart(HandlerCollection.Java:152)
at 
 org.mortbay.jetty.handler.ContextHandlerCollection.doStart
 (ContextHandlerCollection.Java:156)
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.Java:50)
at org.mortbay.jetty.handler.HandlerCollection.doStart(HandlerCollection.Java:152)
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.Java:50)
at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.Java:130)
at org.mortbay.jetty.Server.doStart(Server.Java:224)
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.Java:50)
at org.mortbay.xml.XmlConfiguration.main(XmlConfiguration.Java:985)
at Sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at Sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at Sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at Java.lang.reflect.Method.invoke(Unknown Source)
at org.mortbay.start.Main.invokeMain(Main.Java:194)
at org.mortbay.start.Main.start(Main.Java:534)
at org.mortbay.start.Main.start(Main.Java:441)
at org.mortbay.start.Main.main(Main.Java:119)
  Caused by: Java.lang.ClassNotFoundException:   
  org.Apache.solr.handler.dataimport.DataImportHandler
at Java.net.URLClassLoader$1.run(Unknown Source)
at Java.security.AccessController.doPrivileged(Native Method)
at Java.net.URLClassLoader.findClass(Unknown Source)
at Java.lang.ClassLoader.loadClass(Unknown Source)
at Java.net.FactoryURLClassLoader.loadClass(Unknown Source)
at Java.lang.ClassLoader.loadClass(Unknown Source)
at Java.lang.Class.forName0(Native Method)
at Java.lang.Class.forName(Unknown Source)
at org.Apache.solr.core.SolrResourceLoader.findClass(SolrResourceLoader.Java:373)
... 34 more
24
Prim

私は、solr 4.1とTomcatを使用して、この問題を少し自分で調べてきました。必要なライブラリを<lib dir="../../dist/" regex="solr-dataimporthandler-.*\.jar" /> -->に含めることができませんでした。これは、solrconfig.xmlが含まれているディレクトリから、上に2つ、下に1つあるため、正しい必要があると考えました。直接パス(私にとっては/ opt/solr/dist)を一時的にサブスクライブするまで、問題は間違ったディレクトリから開始していることに気づきました。私が必要としていたのは次のとおりです。

<lib dir="../dist/" regex="solr-dataimporthandler-.*\.jar" /> -->

したがって、これを含めるのに問題がある場合は、confディレクトリ自体ではなく、confディレクトリを含むディレクトリから開始していることを確認してください。

17
John Fiala

4.3を含むSolrのいくつかのバージョンでは、ソースからビルドするときに、dataimportハンドラーjarが最終的なwarファイルに含まれていないようです。

ファイル/solr/webapp/build.xmlを変更することにより、これに対する非常に簡単な修正があります。

  1. そのファイルを開き、「遠い」ターゲットを見つけます。
  2. 「遠い」ターゲットのこのセクションを見つけてください:

    <lib dir="${dist}" excludes="${exclude.from.war},${common.classpath.excludes}">

  3. このアイテムをそのセクションのインクルードのリストに追加します:

    <include name="Apache-solr-dataimporthandler-${version}.jar" />

保存して終了。

ここで、ビルドするときに、次のことを行います。

  • ant dist-contrib
  • ant dist

Dataimporthandler jarがWARファイルにあることを確認するには、それを解凍し、WEB-INF/libディレクトリー内のjarの中から探します。

これのいくつかのバリエーションは、おそらく以前のバージョンでも機能します。

4
Jerry Mindek

探しているjarファイル(少なくとも3.5では)は./distsフォルダーの下にあります

4
Jackie

あなたが私たちに言っている限り、あなたのjarファイル名は提供された正規表現と一致しません:

指定された構成の場合:

<lib dir="../../dist/" regex="Apache-solr-dataimporthandler-\d.*\.jar" /> 

ファイル:

dataimporthandler.jar

Solrのサンプル構成ファイル に示されているように、正規表現と一致しませんが、一致する必要があります。

おそらく、以下を指定することから始めます。

<lib dir="../../dist/"/>
2
Nicolas Modrzyk

sOLRjarをWEB-INF/libの下に置きます

2
baybora.oren

Glassfish3.1.2コンテナーでSolr4.0を使用していますが、Solr War自体を開き、内部にjarファイルを手動で追加し、Glassfishを再デプロイすることで問題を解決しました。

1
Ronald91

Solrソースからdataimporthandlerjarをビルドすることで、この問題を解決しました。 3.1の場合、dataimporthandlerはApache-solr-core-3.1.0.jarに含まれていません。 dataimporthandlerのjarファイルが見つからなかったため、ソースからビルドしてsolrlibディレクトリに配置しました。

1
Paras

Solrconfig.xmlファイルのconfigタグの下に以下のコードを追加する必要があります。
注:それに応じてjarファイルのバージョンを変更してください。

<lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-dataimporthandler-.*\.jar" />
<lib dir="${solr.install.dir:../../../..}/dist/" regex="mysql-connector-Java-5.1.18-bin.jar" />

詳細については、 connecting-solr-to-database を参照してください。

0
Shobhit_Geek

次の3つの必須フィールドが正しいことを確認してください。

1)solr-conf.xmlのdataimportハンドラーのエントリー

</requestHandler>
<requestHandler name="/dataimport" class="org.Apache.solr.handler.dataimport.DataImportHandler">
<lst name="defaults">
<str name="config">data-config.xml</str>
</lst>
</requestHandler>

2)Solr warファイルはsolr-homeフォルダーを認識しているため、solr-homeに含まれているライブラリーを認識しています。 solr-homeが明示的に追加された場合。

Solr.warにsolr-homeフォルダーを認識させるには、サーバーにsolr.warをデプロイします。

Apache-Tomcat-6.0.36/webapps/solr/WEB-INFに移動し、任意のテキストエディターでweb.xmlを開きます。

次に、以下に示すエントリを検索します

<!-- <env-entry>
<env-entry-name>solr/home</env-entry-name>
<env-entry-value> /Path/To/My/solr/Home/solr/</env-entry-value>
<env-entry-type>Java.lang.String</env-entry-type>
</env-entry> -->

ケースの値をsolr-homeフォルダーに置き換えます。これにより、solrが作成され、solr-homeフォルダーがポイントされるため、その中にlibフォルダーが作成されます。

3)新しいライブラリの場所を/home/javaguys/solr-home/collection1/conf/solr-config.xmlに追加します。のようなタグのすぐ下。

これで問題が解決することを願っています。詳細については、こちらをご覧ください 解決策はこちら

0
neel4soft

バージョンは4.3.1で、dataimporthandlerjarを/libにコピーしましたが、機能しませんでした。この問題を修正するために、これをconf/solrconfig.xmlに追加しました。

<lib dir="../../../dist/" regex="solr-dataimporthandler-.*\.jar" />
0
user2098849

この問題は、WindowsTomcatとUbuntuTomcatで2回発生しました。
SOLR 4.3、およびTomcat 7

以下のファイルがSOLR_Home/libフォルダーにあることを確認してください
solr-dataimporthandler-4.3.0.jar

上記のように、構成ファイルにも参照が必要です。必要に応じてパスを調整します。

<lib dir="../../dist/" regex="Apache-solr-dataimporthandler-\d.*\.jar" />

いくつかのパスが台無しになっているかもしれませんが、それが私がそれを機能させる方法です。

0
imlit