java.lang.ClassCastException:在HEROKU中运行Web应用程序时

时间:2012-12-04 16:54:33

标签: jsp servlets heroku classcastexception

我试图在heroku中运行一个Web应用程序。 它是一个带有JSP-Servlet架构的简单Web应用程序。

http://electric-rain-8409.herokuapp.com/client/home?page=Page&name=maginfoINSERT&type=form 当我点击此URL时会出现此错误

java.lang.ClassCastException:java.util.Collections $ UnmodifiableMap无法强制转换为java.util.HashMap

*at org.apache.jsp.client.Page_jsp._jspService(org.apache.jsp.client.Page_jsp:185)
-----
-----
-----
at org.eclipse.jetty.server.Dispatcher.forward(Dispatcher.java:288)
at org.eclipse.jetty.server.Dispatcher.forward(Dispatcher.java:115)
at com.akas.magclub.servlet.UrlForward.doGet(UrlForward.java:34)*

它试图访问的servlet是UrlForward,它只是将请求转发到由参数Page标识的jsp页面。

令人惊奇的是,以下网址有效 http://electric-rain-8409.herokuapp.com/client/home?page=frontpage&tag=

无法理解为什么会这样。整个Web应用程序在本地机器环境中运行良好。

1 个答案:

答案 0 :(得分:0)

我收到了错误。 servlet转发此请求以尝试获取参数映射的JSP页面,它尝试像这样执行

HashMap <String,String[]> parammap=(HashMap<String,String[]>)request.getParameterMap();

但是request.getParameterMap()返回一个unmodifiableCollection,它不能仅仅因为它是只读的而且HashMap提供R / W访问而不能转换为HashMap。

因此将其更改为

Map<String,String[]> parammap=request.getParameterMap();

解决了这个问题。

但有一件事仍然存在。当在tomcat中运行时,上面的HashMap代码在本地运行良好,但在heroku运行时失败。