做微信公众号的开发者模式时报错,第一个文本接口同美通过,一直报错,帮忙看看,谢谢了

qq_29808189 2015-10-24 10:40:48
下面是我的代码
web.xml配置
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

<servlet>
<servlet-name>weixinServlet</servlet-name>
<servlet-class>com.zhen.servlet.WeixinServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
<servlet-name>weixinServlet</servlet-name>
<url-pattern>/WX.do</url-pattern>
</servlet-mapping>

<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>


java代码
package com.zhen.servlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.HashMap;
import java.util.Map;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.dom4j.DocumentException;

import com.zhen.dto.MessageDTO;
import com.zhen.util.CheckUtil;
import com.zhen.util.MessageUtil;

public class WeixinServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// TODO Auto-generated method stub
String signature = request.getParameter("signature");//
String timestamp = request.getParameter("timestamp");
String nonce = request.getParameter("nonce");
String echostr = request.getParameter("echostr");

PrintWriter out = response.getWriter();
response.setCharacterEncoding("utf-8");
if (CheckUtil.checkSignature(signature, timestamp, nonce)) {
out.print(echostr);
}
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// TODO Auto-generated method stub
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
String result = null;
MessageDTO messageDTO = new MessageDTO();
String type = request.getParameter("MsgType");
Map<String, String> mapone = new HashMap<String, String>();
PrintWriter out = null;


try
{
mapone = MessageUtil.xmlToMap(request);
} catch (DocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
String msgType = mapone.get("MsgType");
messageDTO.setToUserName(mapone.get("fromUserName"));
messageDTO.setFromUserName(mapone.get("ToUserName"));
messageDTO.setCreateTime(mapone.get("createTime"));
messageDTO.setMsgType(msgType);
messageDTO.setContent(mapone.get("content"));

out = response.getWriter();

out.print(result);

}
}



public static Map xmlToMap(HttpServletRequest request) throws IOException, DocumentException {
Map map = new HashMap();
SAXReader reader = new SAXReader();
InputStream ins = request.getInputStream();

Document doc = reader.read(ins);
Element root = doc.getRootElement();
List<Element> list = root.elements();
for(Element e:list){
map.put(e.getName(), e.getText());
}
ins.close();

return map;
}





报错截图
...全文
94 点赞 收藏 4
写回复
4 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
科學信仰 2015-10-25
引用 3 楼 qq_29808189 的回复:
已经解决的,是看了别人说的一段话,具体是什么原因,我也不知道,有知道的大神说说原因,下面是解决方法 因为运行时没有找到第三方类库的包,所以报错,将dom4j的包复制到javahome\Java\jre6\lib\ext下,运行程序,OK! 所以对于jdk安装目录下的两个文件夹,jdk和jre,jdk用于开发环境,应该包括程序的编译,如果程序中包含第三方类库,可直接将第三方jar包复制到扩展目录下。而jre用于运行环境,如果程序中包含第三方类库,要运行程序,将第三方jar包复制至扩展目录下,在类加载时,会自动加载该目录下的类库。
放哪都行,只要是classpath下
回复
qq_29808189 2015-10-24
已经解决的,是看了别人说的一段话,具体是什么原因,我也不知道,有知道的大神说说原因,下面是解决方法 因为运行时没有找到第三方类库的包,所以报错,将dom4j的包复制到javahome\Java\jre6\lib\ext下,运行程序,OK! 所以对于jdk安装目录下的两个文件夹,jdk和jre,jdk用于开发环境,应该包括程序的编译,如果程序中包含第三方类库,可直接将第三方jar包复制到扩展目录下。而jre用于运行环境,如果程序中包含第三方类库,要运行程序,将第三方jar包复制至扩展目录下,在类加载时,会自动加载该目录下的类库。
回复
科學信仰 2015-10-24
类没找到,但是你的Stacktrace没给全,从中可以看出该类的一些信息乃至其jar包
回复
qq_29808189 2015-10-24
回复
发帖
Web 开发
创建于2007-09-28

8.0w+

社区成员

Java Web 开发
申请成为版主
帖子事件
创建了帖子
2015-10-24 10:40
社区公告
暂无公告