2017-11-25 1213 views
-1

我是一名Spring MVC初学者,在Eclipse中使用Tomcat 9运行Spring应用程序。我在运行时收到以下错误。无法加载JDBC驱动程序类'com.mysql.cj.jdbc.driver'

org.apache.jasper.JasperException: An exception occurred processing JSP page [/WEB-INF/views/listOrganization1.jsp] at line [13] 

    10: </head> 
    11: <body> 
    12:  <h1>Listing organizations using JSTL SQL tag</h1> 
    13:  <sql:query var="rs" dataSource="jdbc/springdb"> 
    14:   SELECT * FROM organization 
    15:  </sql:query> 
    16:  


    Stacktrace: 
     org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:588) 
     org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:466) 
     org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:385) 
     org.apache.jasper.servlet.JspServlet.service(JspServlet.java:329) 
     javax.servlet.http.HttpServlet.service(HttpServlet.java:742) 
     org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) 
     org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:170) 
     org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:314) 
     org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1325) 
     org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1069) 
     org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1008) 
     org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:925) 
     org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:978) 
     org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:870) 
     javax.servlet.http.HttpServlet.service(HttpServlet.java:635) 
     org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:855) 
     javax.servlet.http.HttpServlet.service(HttpServlet.java:742) 
     org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) 


    Root Cause 
    javax.servlet.ServletException: javax.servlet.jsp.JspException: Unable to get connection, DataSource invalid: "java.sql.SQLException: Cannot load JDBC driver class 'com.mysql.cj.jdbc.driver'" 
     org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:669) 
     org.apache.jsp.WEB_002dINF.views.listOrganization1_jsp._jspService(listOrganization1_jsp.java:156) 
     org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) 
     javax.servlet.http.HttpServlet.service(HttpServlet.java:742) 
     org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:443) 
     org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:385) 
     org.apache.jasper.servlet.JspServlet.service(JspServlet.java:329) 
     javax.servlet.http.HttpServlet.service(HttpServlet.java:742) 
     org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) 
     org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:170) 
     org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:314) 
     org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1325) 
     org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1069) 
     org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1008) 
     org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:925) 
     org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:978) 
     org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:870) 
     javax.servlet.http.HttpServlet.service(HttpServlet.java:635) 
     org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:855) 
     javax.servlet.http.HttpServlet.service(HttpServlet.java:742) 
     org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) 


    Root Cause 
    javax.servlet.jsp.JspException: Unable to get connection, DataSource invalid: "java.sql.SQLException: Cannot load JDBC driver class 'com.mysql.cj.jdbc.driver'" 
     org.apache.taglibs.standard.tag.common.sql.QueryTagSupport.getConnection(QueryTagSupport.java:285) 
     org.apache.taglibs.standard.tag.common.sql.QueryTagSupport.doStartTag(QueryTagSupport.java:168) 
     org.apache.jsp.WEB_002dINF.views.listOrganization1_jsp._jspx_meth_sql_005fquery_005f0(listOrganization1_jsp.java:180) 
     org.apache.jsp.WEB_002dINF.views.listOrganization1_jsp._jspService(listOrganization1_jsp.java:135) 
     org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) 
     javax.servlet.http.HttpServlet.service(HttpServlet.java:742) 
     org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:443) 
     org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:385) 
     org.apache.jasper.servlet.JspServlet.service(JspServlet.java:329) 
     javax.servlet.http.HttpServlet.service(HttpServlet.java:742) 
     org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) 
     org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:170) 
     org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:314) 
     org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1325) 
     org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1069) 
     org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1008) 
     org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:925) 
     org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:978) 
     org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:870) 
     javax.servlet.http.HttpServlet.service(HttpServlet.java:635) 
     org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:855) 
     javax.servlet.http.HttpServlet.service(HttpServlet.java:742) 
     org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) 

mysql-connector-java-6.0.6.jar已经存在的项目作为Maven的依赖

enter image description here

而且context.xml的有Tomcat的已经有数据库信息作为一种资源

<?xml version="1.0" encoding="UTF-8"?> 
<!-- 
    Licensed to the Apache Software Foundation (ASF) under one or more 
    contributor license agreements. See the NOTICE file distributed with 
    this work for additional information regarding copyright ownership. 
    The ASF licenses this file to You under the Apache License, Version 2.0 
    (the "License"); you may not use this file except in compliance with 
    the License. You may obtain a copy of the License at 

     http://www.apache.org/licenses/LICENSE-2.0 

    Unless required by applicable law or agreed to in writing, software 
    distributed under the License is distributed on an "AS IS" BASIS, 
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
    See the License for the specific language governing permissions and 
    limitations under the License. 
--><!-- The contents of this file will be loaded for each web application --><Context> 

    <!-- Default set of monitored resources. If one of these changes, the --> 
    <!-- web application will be reloaded.         --> 
    <WatchedResource>WEB-INF/web.xml</WatchedResource> 
    <WatchedResource>${catalina.base}/conf/web.xml</WatchedResource> 

    <!-- Uncomment this to disable session persistence across Tomcat restarts --> 
    <!-- 
    <Manager pathname="" /> 
    --> 

    <Resource name="jdbc/springdb" auth="Container" type="javax.sql.DataSource" 
       maxTotal="100" maxIdle="30" maxWaitMillis="10000" 
       username="devuser" password="$Data4Dev" driverClassName="com.mysql.cj.jdbc.driver" 
       url="jdbc:mysql://localhost:3306/spring_db?useSSL=false"/> 

</Context> 

根据对此处另一个问题的回应,我还将mysql连接器jar添加到了运行时配置中Tomcat 9服务器。 enter image description here

我也删除了存储库中的C:\用户\ user1.m2 \库多次,关闭和打开Eclipse和更新的Maven项目 - 一切都没有工作,我不断收到同样的错误。

+4

尝试在'com.mysql.cj.jdbc.driver'末尾的'driver'中大写'd'。 –

+1

你不应该使用MySQL Connector/J 6.0.6。它是**废弃** Connector/J 6分支的开发/测试版本(它们继续在连接器/ J 8开发分支中,该分支尚未发布)。最新版本的MySQL仍然是5.1.44 –

+2

另外,不应该使用sql标签库。如果你从你的视图中执行SQL查询,你真的错过了MVC的全部观点。控制器从数据库获取数据,将其存储在模型中,并将控制权交给视图,该视图显示模型中的数据。这是MVC的基本原则。 –

回答

0

这是通过Luke Woodward提出的修改来解决的。

相关问题