web-dev-qa-db-ja.com

Solr例外を修正する方法:必要なSLF4jログjarが見つかりませんでしたか?

Ubuntu12.04にSolr4.3をインストールするのに大きな問題があります。まず、Tomcatをインストールしました。 localhost:8080のブラウザからTomcatにアクセスできます。 「TomcatWebApplication Manager」に、「2solr.war」ファイルを介してSolr 4.3をインストールしようとしています。ファイルはアップロードされてデプロイされていますが、開始できません。「FAIL-コンテキストパス/ solrのアプリケーションを開始できませんでした」。

ログファイル(localhost.log) のように見える:

07.05.2013 11:05:36 org.Apache.catalina.core.ApplicationContext log
INFO: HTMLManager: start: Starting web application at '/solr'
07.05.2013 11:05:36 org.Apache.catalina.core.StandardContext filterStart
SCHWERWIEGEND: Exception starting filter SolrRequestFilter
org.Apache.solr.common.SolrException: Could not find necessary SLF4j logging jars. If using Jetty, the SLF4j logging jars need to go in the jetty lib/ext directory. For other containers, the corresponding directory should be used. For more information, see: http://wiki.Apache.org/solr/SolrLogging
    at org.Apache.solr.servlet.SolrDispatchFilter.<init>(SolrDispatchFilter.Java:105)
    ... 33 more
07.05.2013 11:05:36 org.Apache.catalina.core.ApplicationContext log
INFO: HTMLManager: list: Listing contexts for virtual Host 'localhost'
07.05.2013 11:05:36 org.Apache.catalina.core.StandardContext filterStart
SCHWERWIEGEND: Exception starting filter SolrRequestFilter
org.Apache.solr.common.SolrException: Could not find necessary SLF4j logging jars. If using Jetty, the SLF4j logging jars need to go in the jetty lib/ext directory. For other containers, the corresponding directory should be used. For more information, see: http://wiki.Apache.org/solr/SolrLogging
    at org.Apache.solr.servlet.SolrDispatchFilter.<init>(SolrDispatchFilter.Java:105)
    ... 21 more

カタリナ.....ログ

07.05.2013 11:05:36 org.Apache.catalina.core.StandardContext start
SCHWERWIEGEND: Error filterStart
07.05.2013 11:05:36 org.Apache.catalina.core.StandardContext start
SCHWERWIEGEND: Context [/solr] startup failed due to previous errors
07.05.2013 11:05:36 org.Apache.catalina.startup.HostConfig checkResources
INFO: Reloading context [/solr]
07.05.2013 11:05:36 org.Apache.catalina.core.StandardContext stop
INFO: Container org.Apache.catalina.core.ContainerBase.[Catalina].[localhost].[/solr] has not been started
07.05.2013 11:05:36 org.Apache.catalina.core.StandardContext start
SCHWERWIEGEND: Error filterStart
07.05.2013 11:05:36 org.Apache.catalina.core.StandardContext start
SCHWERWIEGEND: Context [/solr] startup failed due to previous errors

誰かが私を助けて、何をすべきか教えてもらえますか?

17
Stillmatic1985

ログが言うように-Could not find necessary SLF4j logging jars.

Slf4jjarがありません。

slf4jjarを$CATALINA_BASE/libフォルダーに配置します。詳細については、こちらをご覧ください こちら

29
JHS

コピーしたくない場合は、CLASSPATH変数を変更して、関連するすべてのものを含めることができます。

これはあなたができることの例です:

cd /tmp
wget http://www.slf4j.org/dist/slf4j-1.6.6.Zip
unzip slf4j-1.6.6.Zip
mv slf4j-1.6.6/integration/lib slf4j
CLASSPATH="`find /tmp/slf4j/ -type f  | xargs echo | sed 's/ /:/g'`"

それはあなたに次のようなものを与えるでしょう:

# echo $CLASSPATH
/tmp/slf4j/slf4j-api-1.6.99.jar:/tmp/slf4j/slf4j-simple-1.6.99.jar:/tmp/slf4j/slf4j-simple-1.5.11.jar:/tmp/slf4j/slf4j-simple-1.4.2.jar:/tmp/slf4j/slf4j-api-1.5.11.jar:/tmp/slf4j/slf4j-simple-1.5.4-SNAPSHOT.jar:/tmp/slf4j/slf4j-nop-1.5.6.jar:/tmp/slf4j/slf4j-1.6.6.Zip:/tmp/slf4j/slf4j-simple-1.5.0.jar:/tmp/slf4j/slf4j-api-2.0.99.jar

変数CLASSPATHは、Tomcatの/ etc/default/Tomcat7(またはRHELディストリビューション/etc/Tomcat7/Tomcat7.conf)で設定できます。したがって、Tomcatが起動すると、catalina.outに次のようなものが表示されます。

SLF4J: Found binding in [jar:file:/tmp/slf4j/slf4j-nop-1.5.6.jar!/org/slf4j impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/tmp/slf4j/slf4j-simple-1.4.2.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/tmp/slf4j/slf4j-simple-1.5.0.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/tmp/slf4j/slf4j-simple-1.5.11.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/tmp/slf4j/slf4j-simple-1.5.4-SNAPSHOT.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/tmp/slf4j/slf4j-simple-1.6.99.jar!/org/slf4j/impl/StaticLoggerBinder.class]

変数を設定する方が、システムを維持してからコピーする方がはるかにクリーンな方法だと思います。

必要に応じて、slf4jパッケージのlibsをオフコースで使用できます(dpkg -L libslf4j-Java/rpm -ql slf4jでライブラリがインストールされている場所を確認し、/ usr/share/Javaからjarを取得します)。また、システムツール(apt-get/yum)を使用してslf4j(およびCLASSPATH変数を介して「含める」他のライブラリ)をアップグレードできるという利点もあります。

お役に立てれば。

PS。 Debian/Ubuntuを使用する場合は、追加の手順があります。Java_OPTSを変更して以下を含める必要があります。

Java_OPTS="${Java_OPTS} -classpath ${CLASSPATH}"

これが機能するために。 Debian/UbuntuにはRHELベースのディストリビューションとして構成変数CLASSPATHがないようです。

1
Jakov Sosic

これらのメッセージがログファイルで言うことを正確に行う必要があります。

SLF4jロギングjarを<solr>/example/lib/ext/*.jarからTomcatLib(例:Tomcat_HOME/lib/usr/share/Tomcat/lib)またはWebapp Libディレクトリ(例:Tomcat_HOME/webapps/solr/WEB-INF/lib)にコピーします。これらのjarファイルはSLF4Jlog4jを設定します。

Jettyを使用している場合、SLF4jロギングjarはjettylib/extディレクトリに配置する必要があります。他のコンテナの場合は、対応するディレクトリを使用する必要があります。詳細については、以下を参照してください。 http://wiki.Apache.org/solr/SolrLogging

言い換えると、SolrをTomcatで正しく動作させるには、次のことを行う必要があります。

  1. SLF4jログjarを<solr>/example/lib/ext/*.jarからTomcatLib(例:Tomcat_HOME/lib/usr/share/Tomcat/lib)またはWebapp Libディレクトリ(例:Tomcat_HOME/webapps/solr/WEB-INF/lib)にコピーします。これらのjarは、SLF4Jとlog4jをセットアップします。

    OSベンダーから入手可能なTomcatパッケージを使用するDebianまたはUbuntuサーバーの場合、これは/usr/share/Tomcat6/libまたは/usr/share/Tomcat7/libである可能性があります。

    例えば:

    # cp -v /opt/solr-4.10.4/example/lib/ext/*.jar /usr/share/tomcat?/lib/
    

    または:

    # cp -v /opt/solr-4.10.4/example/lib/ext/*.jar /var/lib/Tomcat7/webapps/solr/WEB-INF/lib/
    

    または、jarファイルを指すようにCLASSPATHを設定します。

  2. ロギング設定をsolr/example/resources/log4j.propertiesからクラスパス上の場所にコピーします。通常、上記のjarファイルと同じ場所を使用して、優先するログの宛先の構成ファイルを編集できます。

    オプションで、クラスパスにlog4j.propertiesを配置しなかった場合は、Javaオプション:-Dlog4j.configuration=file:///path/to/log4j.propertiesを設定します。

  3. Tomcatを再起動します(例:Sudo /etc/init.d/Tomcat7 restart)。

それでも問題が解決しない場合は、サーバーを-Dlog4j.debug=trueで起動して、詳細を確認すると役立つ場合があります。

参照: Jetty以外のコンテナーでのロギング設定の例を使用

1
kenorb