17

我在 Ubuntu 12.04 下安装 Solr 4.3 时遇到很大问题。首先我安装了tomcat。我可以通过 localhost:8080 上的浏览​​器访问 tomcat。进入“Tomcat Web 应用程序管理器”,我尝试通过 2solr.war 文件安装 Solr 4.3。该文件已上传并部署。但我无法启动它。“失败 - 无法启动上下文路径/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

有人可以帮助我并告诉我该怎么做吗?

4

3 回答 3

29

正如日志所说 -Could not find necessary SLF4j logging jars.

您缺少 slf4j 罐子。

slf4j罐子放在$CATALINA_BASE/lib文件夹中。有关更多信息,请查看此处

于 2013-05-07T09:48:10.390 回答
1

如果你不想复制东西,你可以修改你的 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

您可以在 tomcat 的 /etc/default/tomcat7(或 RHEL 发行版 /etc/tomcat7/tomcat7.conf)中设置变量 CLASSPATH。所以,当 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 包中的库(使用 dpkg -L libslf4j-java / rpm -ql slf4j 检查它们安装在哪里,并从 /usr/share/java 获取 jars)。您还将受益于能够使用系统工具(apt-get/yum)升级您的 slf4j(以及您通过 CLASSPATH 变量“包含”的其他库)。

希望这可以帮助。

PS。如果您使用 Debian/Ubuntu,还有一个额外的步骤 - 您必须修改 JAVA_OPTS 以包含:

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

为此工作。似乎 Debian/Ubuntu 没有配置变量 CLASSPATH 作为基于 RHEL 的发行版。

于 2014-08-25T18:14:45.517 回答
1

您需要完全按照这些消息在日志文件中的说明执行操作:

SLF4j日志记录 jar 从<solr>/example/lib/ext/*.jarTomcat Lib(例如TOMCAT_HOME/lib/usr/share/tomcat/lib或 Webapp Lib 目录(例如TOMCAT_HOME/webapps/solr/WEB-INF/lib)中复制。这些罐子将设置SLF4Jlog4j.

如果使用 Jetty,SLF4j日志 jar 需要放在 jetty lib/ext 目录中。对于其他容器,应使用相应的目录。有关详细信息,请参阅:http ://wiki.apache.org/solr/SolrLogging

换句话说,要使 Solr 与 Tomcat 一起正常工作,您需要:

  1. 将 SLF4j 日志记录 jar 从<solr>/example/lib/ext/*.jarTomcat Lib(例如TOMCAT_HOME/lib/usr/share/tomcat/lib)或 Webapp Lib 目录(例如TOMCAT_HOME/webapps/solr/WEB-INF/lib)复制。这些 jar 将设置 SLF4J 和 log4j。

    对于使用操作系统供应商提供的 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/
    

    或者设置您CLASSPATH指向您的 jar 文件。

  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 以外的容器中使用示例日志记录设置

于 2015-04-06T18:13:28.837 回答