我试图在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应用程序在本地机器环境中运行良好。
答案 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运行时失败。