ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

ClassNotFoundException通过java的Servlet运行JDBC时

2019-09-29 15:15:32  阅读:157  来源: 互联网

标签:java mysql eclipse jdbc servlets


在尝试创建一个MysqlDataSource对象时,我得到了这个奇怪的异常(或者至少我认为这是问题的根源).

让我首先准确描述到目前为止我所拥有的:
我使用Tomcat7作为容器,Eclipse作为IDE,以创建一个JSP登录表单,它接受用户名和密码,然后调用名为“LoginController”的Servlet.每当您单击“登录”按钮时,LoginController将根据MySql数据库验证输入(用户名和密码).
好吧,至少这是计划……

一切似乎都没问题,直到它到达需要实例化com.mysql.jdbc.jdbc2.optional.MysqlDataSource对象的部分.
我得到了这个令人讨厌的错误:

HTTP Status 500 - Servlet execution threw an exception

type Exception report

message Servlet execution threw an exception

description The server encountered an internal error that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: Servlet execution threw an exception
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

root cause

java.lang.NoClassDefFoundError: com/mysql/jdbc/jdbc2/optional/MysqlDataSource
    model.Authenticator.authenticateLogin(Authenticator.java:13)
    controller.LoginController.doPost(LoginController.java:52)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:646)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

root cause

java.lang.ClassNotFoundException: com.mysql.jdbc.jdbc2.optional.MysqlDataSource
    org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1720)
    org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571)
    model.Authenticator.authenticateLogin(Authenticator.java:13)
    controller.LoginController.doPost(LoginController.java:52)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:646)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

note The full stack trace of the root cause is available in the Apache Tomcat/7.0.55 logs.

现在,我明白服务器“找不到MysqlDataSource”,我只是不明白为什么,因为我DID将所需的jar文件添加到项目中,通过“Project Properties-> Java Build Path-> Libraries – >添加外部Jar …“,您还可以看到它在Project Explorer中显示:

更令人惊讶的是,当我打开一个常规的Java应用程序项目(而不是动态Web项目)时,我能够连接到Mysql数据库并运行查询而没有任何问题.
只是与Tomcat它不起作用……

我在网上看了一下,看到有人建议通过“Java Source Attachment”来“附加源代码……”,但无法弄清楚如何做到这一点……

任何帮助将不胜感激!

解决方法:

当您将依赖项中的文件添加为外部jar时,在构建应用程序时它不会包含在war文件中.您需要将jar复制到项目中的WEB-INF / lib目录或将其放在Tomcat lib目录中

标签:java,mysql,eclipse,jdbc,servlets
来源: https://codeday.me/bug/20190929/1831743.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有