安装 GeoServer 时出错 - HTTP 状态 404 - /geoserver 和上下文路径 /geoserver 中的应用程序无法启动
Error installing GeoServer - HTTP Status 404 - /geoserver and Application at context path /geoserver could not be started
我最近尝试在 Lubuntu 14.04 服务器上使用 Tomcat7 安装 GeoServer,但遇到了很多问题,因为 Tomcat7 的 Java 默认版本是设置为 1.7。昨晚我为此苦苦挣扎,我想记录如何解决它。
我按照以下步骤在我的 Lubuntu 14.04 机器上安装了 GeoServer:
1) 安装 Java 8,如文档所述 here
sudo apt-add-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java8-installer
之后,运行 java -version
返回:
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) 安装Tomcat7
sudo apt-get install tomcat7 tomcat7-admin
3) 安装 GeoServer 的 "Web Archive" 版本
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
之后,我无法访问 localhost:8080/geoserver
。尝试这样做会返回 HTTP Status 404 - /geoserver
错误,并以 "The requested resource is not available." 作为描述。
尝试通过 Tomcat 的 /manager
页面部署 .war
文件也没有成功,返回以下错误:Application at context path /geoserver could not be started
.
我查看了错误日志以了解出了什么问题,发现了以下异常:
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)
[...]
尽管错误消息说了什么,回显 $JAVA_HOME
返回 /usr/lib/jvm/java-8-oracle
,所以我确定我有必要的 Java 版本。
显然 Tomcat 7 默认带有 1.7 JVM。这可以在 Tomcat Web 应用程序管理器(通常在 localhost:8080/manager
)上检查,在页面底部有一个 table 和 JVM 版本。
+-------------------------------+---------------+-------+
| Tomcat Version | JVM Version | [...] |
+-------------------------------+---------------+-------+
| Apache Tomcat/7.0.52 (Ubuntu) | 1.7.0_121-b00 | [...] |
+-------------------------------+---------------+-------+
由于 GeoServer 需要 Java 1.8,这解释了 UnsupportedClassVersionError
。我们必须明确告诉 Tomcat 使用 JVM 1.8。这已记录在案 here,步骤如下:
首先我们需要找到JVM 1.8 所在的位置。打开控制台终端并输入:
$ echo $JAVA_HOME
Java 8 的文件夹路径应该返回给您。在我的例子中是 /usr/lib/jvm/java-8-oracle
。确保复制它。
然后我们必须编辑 Tomcat 的配置并告诉它使用这个 JVM。在控制台终端上,输入:
$ sudo nano /etc/default/tomcat7
应该打开 Tomcat 7 的配置文件。在其中找到以下文本:
# 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
找到以 JAVA_HOME
开头的行,并将路径更改为您的 Java 8 文件夹。确保通过删除 JAVA_HOME
之前的 #
取消注释该行。在我的例子中,文件最终是这样的:
# 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-oracle
之后我们需要使用以下命令重新启动 Tomcat:
$ sudo service tomcat7 restart
然后如果我们检查 localhost:8080/manager
,在页面底部应该有这样的东西:
+-------------------------------+---------------+-------+
| Tomcat Version | JVM Version | [...] |
+-------------------------------+---------------+-------+
| Apache Tomcat/7.0.52 (Ubuntu) | 1.8.0_131-b11 | [...] |
+-------------------------------+---------------+-------+
GeoServer 现在应该已成功启动,并且应该可以通过 localhost:8080/geoserver
访问。
我最近尝试在 Lubuntu 14.04 服务器上使用 Tomcat7 安装 GeoServer,但遇到了很多问题,因为 Tomcat7 的 Java 默认版本是设置为 1.7。昨晚我为此苦苦挣扎,我想记录如何解决它。
我按照以下步骤在我的 Lubuntu 14.04 机器上安装了 GeoServer:
1) 安装 Java 8,如文档所述 here
sudo apt-add-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java8-installer
之后,运行 java -version
返回:
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) 安装Tomcat7
sudo apt-get install tomcat7 tomcat7-admin
3) 安装 GeoServer 的 "Web Archive" 版本
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
之后,我无法访问 localhost:8080/geoserver
。尝试这样做会返回 HTTP Status 404 - /geoserver
错误,并以 "The requested resource is not available." 作为描述。
尝试通过 Tomcat 的 /manager
页面部署 .war
文件也没有成功,返回以下错误:Application at context path /geoserver could not be started
.
我查看了错误日志以了解出了什么问题,发现了以下异常:
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)
[...]
尽管错误消息说了什么,回显 $JAVA_HOME
返回 /usr/lib/jvm/java-8-oracle
,所以我确定我有必要的 Java 版本。
显然 Tomcat 7 默认带有 1.7 JVM。这可以在 Tomcat Web 应用程序管理器(通常在 localhost:8080/manager
)上检查,在页面底部有一个 table 和 JVM 版本。
+-------------------------------+---------------+-------+
| Tomcat Version | JVM Version | [...] |
+-------------------------------+---------------+-------+
| Apache Tomcat/7.0.52 (Ubuntu) | 1.7.0_121-b00 | [...] |
+-------------------------------+---------------+-------+
由于 GeoServer 需要 Java 1.8,这解释了 UnsupportedClassVersionError
。我们必须明确告诉 Tomcat 使用 JVM 1.8。这已记录在案 here,步骤如下:
首先我们需要找到JVM 1.8 所在的位置。打开控制台终端并输入:
$ echo $JAVA_HOME
Java 8 的文件夹路径应该返回给您。在我的例子中是 /usr/lib/jvm/java-8-oracle
。确保复制它。
然后我们必须编辑 Tomcat 的配置并告诉它使用这个 JVM。在控制台终端上,输入:
$ sudo nano /etc/default/tomcat7
应该打开 Tomcat 7 的配置文件。在其中找到以下文本:
# 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
找到以 JAVA_HOME
开头的行,并将路径更改为您的 Java 8 文件夹。确保通过删除 JAVA_HOME
之前的 #
取消注释该行。在我的例子中,文件最终是这样的:
# 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-oracle
之后我们需要使用以下命令重新启动 Tomcat:
$ sudo service tomcat7 restart
然后如果我们检查 localhost:8080/manager
,在页面底部应该有这样的东西:
+-------------------------------+---------------+-------+
| Tomcat Version | JVM Version | [...] |
+-------------------------------+---------------+-------+
| Apache Tomcat/7.0.52 (Ubuntu) | 1.8.0_131-b11 | [...] |
+-------------------------------+---------------+-------+
GeoServer 现在应该已成功启动,并且应该可以通过 localhost:8080/geoserver
访问。