2017-11-25 7 views
-1

저는 봄 응용 프로그램을 실행하기 위해 Eclipse에서 Tomcat 9를 사용하는 Spring MVC 초보자입니다. 런타임에 다음 오류가 나타납니다.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 이미 메이븐 의존성

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-connector jar 파일을 런타임 구성에 추가했습니다. Tomcat 9 서버. enter image description here

또한 C : \ Users \ user1.m2 \ repository의 저장소를 여러 번 삭제하고 Eclipse를 닫고 프로젝트를 위해 Maven을 업데이트했습니다. 아무 것도 작동하지 않았고 계속 동일한 오류가 발생합니다.

+4

'com.mysql.cj.jdbc.driver'의 끝에'driver'에서'd'를 대문자로 사용해보십시오. –

+1

MySQL Connector/J 6.0.6을 사용하지 않아야합니다. 버려진 ** Connector/J 6 브랜치 (아직 릴리스되지 않은 Connector/J 8 개발 브랜치에서 계속됨)의 개발/테스트 버전입니다. MySQL의 최신 버전은 여전히 ​​5.1.44입니다. –

+2

또한 sql 태그 라이브러리는 절대로 사용해서는 안됩니다. 뷰 내부에서 SQL 쿼리를 실행하는 경우 MVC의 전체적인 점을 정말로 놓치고 있습니다. 컨트롤러는 데이터베이스에서 데이터를 가져 와서 모델에 저장하고 모델에있는 데이터를 표시하는 뷰에 컨트롤을 제공합니다. 이것이 MVC의 기본 원리입니다. –

답변

0

이 변경 사항은 Luke Woodward가 제안한 변경 사항을 적용하여 수정되었습니다.