2017-11-25 1207 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提出的修改來解決的。

相關問題