错误提示,在myeclipse中运行注册表单,抛出找不到类异常。在网上找过n种办法,但是都没有解决
我采用的是MVC三层架构的开发模式,不过我没有使用三大框架,只是用简单的servlet+jsp实现而已。
这是运行是出现的错误,求教!!
root cause
java.lang.NoClassDefFoundError: org/apache/commons/dbutils/ResultSetHandler
zww.com.service.impl.UserServiceImpl.<init>(UserServiceImpl.java:10)
zww.com.controller.RegisterServlet.<init>(RegisterServlet.java:17)
sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
java.lang.reflect.Constructor.newInstance(Constructor.java:526)
java.lang.Class.newInstance(Class.java:374)
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:504)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:620)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:509)
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1104)
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:684)
org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1524)
org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1480)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
java.lang.Thread.run(Thread.java:744)
这是我的代码
//控制层
package zww.com.controller;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import zww.com.domain.User;
import zww.com.service.impl.UserServiceImpl;
public class RegisterServlet extends HttpServlet {
private UserService userService;//service层提供的接口
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String message = "";
try{
String name = request.getParameter("name");
String password = request.getParameter("password");
int age = Integer.parseInt(request.getParameter("age"));
String gender = request.getParameter("gender");
String birthday = request.getParameter("birthday");
SimpleDateFormat date = new SimpleDateFormat("yyyy-MM-dd");
Date d = date.parse(birthday);
String phone = request.getParameter("phone");
String email = request.getParameter("email");
String description = request.getParameter("description");
User user = new User();
user.setName(name);
user.setPassword(password);
user.setAge(age);
user.setGender(gender);
user.setBirthday(d);
user.setPhone(phone);
user.setEmail(email);
user.setDecription(description);
userService.add(user);//此行抛出异常
message = message + "注册成功";
}catch(Exception e){
message = message + "注册失败";
throw new RuntimeException(e);
}finally{
request.setAttribute("message", message);
request.getRequestDispatcher("/shop/jsp/message.jsp").forward(request, response);
}
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
//实现service层的代码,抽取接口的代码就不贴出来了
package zww.com.service.impl;
import java.util.List;
import zww.com.dao.impl.UserDaoImpl;
import zww.com.domain.User;
import zww.com.service.UserService;
public class UserServiceImpl implements UserService {
private UserDaoImpl userDao = new UserDaoImpl();
/* (non-Javadoc)
* @see zww.com.service.impl.UserService#add(zww.com.domain.User)
*/
@Override
public void add(User user){
userDao.add(user);
}
//数据访问层dao,抽取接口的代码也不贴出来了
package zww.com.dao.impl;
import java.util.List;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import zww.com.dao.UserDao;
import zww.com.domain.User;
import zww.com.utils.JDBCUtils;
public class UserDaoImpl implements UserDao {
/* (non-Javadoc)
* @see zww.com.dao.impl.UserDao#add(zww.com.domain.User)
*/
@Override
public void add(User user){
try{
QueryRunner q = new QueryRunner(JDBCUtils.getDataSource());
String sql = "insert into user(name,password,age,gender,birthday,phone,email,description) values(?,?,?,?,?,?,?,?)";
Object param[] = {user.getName(),user.getPassword(),user.getAge(),user.getGender(),user.getBirthday(),user.getPhone(),user.getEmail(),user.getDecription()};
q.update(sql, param);
}catch(Exception e){
throw new RuntimeException(e);
}
}
dao层的代码我已经测试过了,可以添加数据。网上有说可能是jar包版本的原因,但是我换了好几个版本,还是不行。也有说是编译器的问题,我用Eclipse还是不行。特此来向老师们求教