sirve - tomcat 7 install
¿Cómo arreglar Solr Exception: no se encontraron los archivos jar necesarios para el registro de SLF4j? (3)
Tengo grandes problemas al instalar Solr 4.3 en Ubuntu 12.04. En primer lugar instalé tomcat. Puedo acceder a Tomcat a través del navegador en localhost: 8080. En el "Administrador de aplicaciones web de Tomcat" trato de instalar Solr 4.3 a través de 2solr.war ". El archivo se ha cargado y desplegado. Pero no puedo iniciarlo." FALLO: no se pudo iniciar la aplicación en la ruta de contexto / solr ".
El archivo de registro ( localhost.log
) se ve así:
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
catalina ..... registro
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
¿Alguien puede ayudarme y decirme qué hacer?
Como dicen los registros: Could not find necessary SLF4j logging jars.
Te están perdiendo los tarros slf4j.
Coloque los tarros slf4j
en la carpeta $CATALINA_BASE/lib
. Para más información echar un vistazo here
Debe hacer exactamente lo que dicen estos mensajes en sus archivos de registro:
Copie los
SLF4j
registroSLF4j
de<solr>/example/lib/ext/*.jar
en Tomcat Lib (por ejemplo,TOMCAT_HOME/lib
,/usr/share/tomcat/lib
) o en el directorio Webapp Lib (por ejemplo,TOMCAT_HOME/webapps/solr/WEB-INF/lib
). Estos tarros configuraránSLF4J
ylog4j
.Si utiliza Jetty, los
SLF4j
registroSLF4j
deben ir al directorio lib / ext de Jetty. Para otros contenedores, debe utilizarse el directorio correspondiente. Para obtener más información, consulte: wiki.apache.org/solr/SolrLogging
En otras palabras, para que su Solr funcione correctamente con Tomcat, debe:
Copie los archivos de registro SLF4j de
<solr>/example/lib/ext/*.jar
en Tomcat Lib (por ejemplo,TOMCAT_HOME/lib
,/usr/share/tomcat/lib
) o en el directorio Webapp Lib (por ejemplo,TOMCAT_HOME/webapps/solr/WEB-INF/lib
). Estos tarros configurarán SLF4J y log4j.Para un servidor Debian o Ubuntu que usa el paquete Tomcat disponible del proveedor del sistema operativo, es probable que sea
/usr/share/tomcat6/lib
o/usr/share/tomcat7/lib
.Por ejemplo:
# cp -v /opt/solr-4.10.4/example/lib/ext/*.jar /usr/share/tomcat?/lib/
o:
# cp -v /opt/solr-4.10.4/example/lib/ext/*.jar /var/lib/tomcat7/webapps/solr/WEB-INF/lib/
También puede configurar su
CLASSPATH
para que apunte a sus archivos jar.Copie la configuración de registro de
solr/example/resources/log4j.properties
en una ubicación en la ruta desolr/example/resources/log4j.properties
. Por lo general, puede usar la misma ubicación que los archivos jar anteriores y editar el archivo de configuración para su destino de registro preferido.Opcionalmente, si no
log4j.properties
en la ruta delog4j.properties
, configure la opción java:-Dlog4j.configuration=file:///path/to/log4j.properties
Reinicie Tomcat (por ejemplo,
sudo /etc/init.d/tomcat7 restart
).
Si aún tiene problemas, puede ser útil iniciar el servidor con -Dlog4j.debug=true
para ver más detalles.
Consulte: Uso de la configuración de registro de ejemplo en contenedores que no sean Jetty.
Si no quieres copiar cosas, puedes modificar tu variable CLASSPATH para incluir todas las cosas relevantes.
Este es un ejemplo de lo que puedes hacer:
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''`"
Eso te dará algo como:
# 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
Puede establecer la variable CLASSPATH en / etc / default / tomcat7 de su tomcat (o en las distribuciones RHEL /etc/tomcat7/tomcat7.conf). Entonces, cuando Tomcat comience, verás algo como esto en 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]
Creo que configurar la variable es una forma mucho más limpia de mantener tu sistema y luego copiar cosas.
Si lo desea, puede, por supuesto, usar las bibliotecas del paquete slf4j (verifique dónde están instaladas con dpkg -L libslf4j-java / rpm -ql slf4j, y tome los archivos jar de / usr / share / java). También tendrá la ventaja de poder actualizar su slf4j (y otras librerías que "incluya" a través de la variable CLASSPATH) con herramientas del sistema (apt-get / yum).
Espero que esto ayude.
PD. Si usa Debian / Ubuntu, hay un paso adicional: tiene que modificar su JAVA_OPTS para que contenga:
JAVA_OPTS="${JAVA_OPTS} -classpath ${CLASSPATH}"
para que esto funcione Parece que Debian / Ubuntu no tienen la variable de configuración CLASSPATH como distribuciones basadas en RHEL.