Recientemente intenté instalar GeoServer con Tomcat7 en un servidor Lubuntu 14.04 y tuve muchos problemas para hacerlo, porque la versión predeterminada de Java de Tomcat7 estaba configurada en 1.7. Luché mucho con esto anoche y me gustaría documentar cómo solucionarlo.
Instalé GeoServer en mi máquina Lubuntu 14.04 siguiendo estos pasos:
1) Instale Java 8, como se documenta aquí
sudo apt-add-repository ppa:webupd8team/java sudo apt-get update sudo apt-get install oracle-java8-installer Después de eso, ejecutar java -version devolvió:
java version "1.8.0_131" Java(TM) SE Runtime Environment (build 1.8.0_131-b11) Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)2) Instalar Tomcat 7
sudo apt-get install tomcat7 tomcat7-admin3) Instale la versión "Web Archive" de GeoServer
cd ~/Downloads wget http://sourceforge.net/projects/geoserver/files/GeoServer/2.11.0/geoserver-2.11.0-war.zip unzip geoserver-2.11.0-war.zip geoserver.war sudo mv geoserver.war /var/lib/tomcat7/webapps/ sudo service tomcat7 restart Después de eso, no pude acceder a localhost:8080/geoserver . Intentar hacerlo devolvió el error HTTP Status 404 - /geoserver , con "El recurso solicitado no está disponible". como descripción.
Intentar implementar el archivo .war a través de la página /manager de Tomcat tampoco funcionó y devolvió el siguiente error: Application at context path /geoserver could not be started .
Revisé los registros de errores para ver qué estaba fallando y encontré la siguiente excepción:
Apr 29, 2017 12:32:49 PM org.apache.catalina.core.StandardContext listenerStart SEVERE: Error configuring application listener of class org.geoserver.platform.GeoServerHttpSessionListenerProxy java.lang.UnsupportedClassVersionError: org/geoserver/platform/GeoServerHttpSessionListenerProxy : Unsupported major.minor version 52.0 (unable to load class org.geoserver.platform.GeoServerHttpSessionListenerProxy) at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2970) at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1209) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1689) [...] A pesar de lo que dice el mensaje de error, hacer eco $JAVA_HOME devolvió /usr/lib/jvm/java-8-oracle , así que estaba seguro de que tenía la versión de Java necesaria.
Aparentemente, Tomcat 7 se envía con 1.7 JVM por defecto. Esto se puede comprobar en Tomcat Web Application Manager (normalmente en localhost:8080/manager ), en la parte inferior de la página hay una tabla con la versión de JVM.
+-------------------------------+---------------+-------+ | Tomcat Version | JVM Version | [...] | +-------------------------------+---------------+-------+ | Apache Tomcat/7.0.52 (Ubuntu) | 1.7.0_121-b00 | [...] | +-------------------------------+---------------+-------+ Dado que GeoServer requiere Java 1.8, esto explica el UnsupportedClassVersionError . Debemos decirle explícitamente a Tomcat que use JVM 1.8. Esto fue documentado aquí y los pasos son los siguientes:
En primer lugar, debemos encontrar dónde se encuentra JVM 1.8. Abra una terminal de consola e ingrese:
$ echo $JAVA_HOME La ruta a la carpeta de Java 8 debería volver a ti. En mi caso es /usr/lib/jvm/java-8-oracle . Asegúrate de copiarlo.
Luego tenemos que editar las configuraciones de Tomcat y decirle que use esta JVM. En la terminal de la consola, escriba:
$ sudo nano /etc/default/tomcat7Se debe abrir el archivo de configuración para Tomcat 7. Ubique el siguiente texto en él:
# The home directory of the Java development kit (JDK). You need at least # JDK version 1.5. If JAVA_HOME is not set, some common directories for # OpenJDK, the Sun JDK, and various J2SE 1.5 versions are tried. #JAVA_HOME=/usr/lib/jvm/openjdk-6-jdk Busque la línea que comienza con JAVA_HOME y cambie la ruta a su carpeta Java 8. Asegúrese de descomentar la línea eliminando el # antes de JAVA_HOME . En mi caso, el archivo terminó así:
# The home directory of the Java development kit (JDK). You need at least # JDK version 1.5. If JAVA_HOME is not set, some common directories for # OpenJDK, the Sun JDK, and various J2SE 1.5 versions are tried. JAVA_HOME=/usr/lib/jvm/java-8-oracleDespués de eso, debemos reiniciar Tomcat con el siguiente comando:
$ sudo service tomcat7 restart Luego, si verificamos localhost:8080/manager , en la parte inferior de la página debería haber algo como:
+-------------------------------+---------------+-------+ | Tomcat Version | JVM Version | [...] | +-------------------------------+---------------+-------+ | Apache Tomcat/7.0.52 (Ubuntu) | 1.8.0_131-b11 | [...] | +-------------------------------+---------------+-------+ Y GeoServer ahora debería iniciarse con éxito y debería ser accesible a través de localhost:8080/geoserver .