처음으로 드라이버 클래스를로드 할 수 없습니다.

비말 베라

MySQL데이터베이스에 대한 연결을 설정 한 서블릿 클래스가 하나 있습니다. 이것은 doGet()방법에 대한 내 코드입니다 .

public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    try {
           //Class.forName("com.mysql.jdbc.Driver");    
        con = (Connection) DriverManager.getConnection("jdbc:mysql://localhost:3306/test","root","rspl123#");
    } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } 
    System.out.println(con);
    response.getWriter().write(request.getParameter("q"));

}

위 코드의 경우 서블릿이 처음 호출되면 예외가 발생합니다 No suitable driver found. 그러나 두 번째로 성공적으로 실행되고 연결이 설정됩니다.

java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost:3306/test
at java.sql.DriverManager.getConnection(DriverManager.java:602)
at java.sql.DriverManager.getConnection(DriverManager.java:185)
at controller.FetchSuggestion.doGet(FetchSuggestion.java:44)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:261)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:581)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:619)

null
com.mysql.jdbc.JDBC4Connection@1b83048
com.mysql.jdbc.JDBC4Connection@1455d1c
com.mysql.jdbc.JDBC4Connection@1f51e5c

위의 코드는에서 주석을 제거 Class.forName()하면 잘 작동하지만 처음에는 작동하지 않고 두 번째로 연결을 설정할 수 있습니다. 참고 : 클래스 경로에 이미 MySQL JAVA 커넥터가 있습니다.

MySQL Java Connector 버전 : 5.1.10
JDK : 1.6
IDE : MyEclipse for Spring

user2339071

먼저 mysql-connector.jar클래스 경로에 를 포함해야합니다 . 다음에서 항아리를 다운로드 할 수 있습니다.

그런 다음 다음 문을 사용 하여 데이터 소스 연결구성 할 수 있습니다 .

  // This will load the MySQL driver, each DB has its own driver
  try
  {
  Class.forName("com.mysql.jdbc.Driver");
  }
  catch(ClassNotFoundException e)
  {
  e.printStackTrace();
  }

  // Now you can setup the connection with the DB
   Connection connection=null;
   try {
    connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/database","username", "password");
 } 
 catch (SQLException e) 
 {
    System.out.println("Connection Failed..!");
    e.printStackTrace();
}

에 등록하는 DriverClassName것은 매우 중요한 단계 입니다. 그것을 건너 뛰지 마십시오.

편집 : 나는 당신의 문제를 발견했다고 생각합니다. 분석은 다음과 같습니다.

  • 응용 프로그램이 작동하는 이유 Class.forName이 드라이버를로드 하도록 특별히 요청DriverManager 했기 때문 입니다.
  • 응용 프로그램이 처음으로 작동하지 않는 이유는 사용할 드라이버를 지정하지 않았기 때문입니다.

두 번째 요점에 대해 자세히 설명 하겠습니다 .

당신은 절대적 권리 것을 말하는 응용 프로그램없이 작동합니다Class.forName . 하지만 aaahhh ... 문제 가 있습니다 .

  • 이 때 지정하지Class.forNameDriverManager에 그것을 찾을 수있는 많은 드라이버로로드하려고합니다 다음 주어진 연결 요청, 그것은 대상 URL에 연결을 시도 할 차례 각 드라이버를 요청합니다.

이는 응용 프로그램에 여러 드라이버가있을 수 있음을 의미합니다 . DriverManager에 이러한 드라이버를 발견하고 데이터베이스로의 연결을 설정하는 데 노력했다 . 첫 번째 드라이버 FOUND 오른쪽 아니었다 때문에 연결이 널 (null)이었다 . 그러나 잠깐, DriverManager는 똑똑 합니다. 데이터베이스에 연결할 수 없다는 것을 알고 있으므로 이제 발견 된 다른 드라이버를 사용합니다 . 그리고 Presto, 연결이 설정됩니다.

참조 : 드라이버 인터페이스를 확인하십시오 . 문서에 언급되어 있습니다.

도움이 되었기를 바랍니다. :)

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

예외는 java.lang.IllegalStateException : JDBC 드라이버 클래스를로드 할 수 없습니다.

분류에서Dev

LocalContainerEntityManagerFactoryBean JDBC 드라이버 클래스 'org.h2.Driver'를로드 할 수 없습니다. Hibernate SessionFactory를 빌드 할 수 없습니다.

분류에서Dev

Android Java에서 클래스를로드 할 수 없습니다.

분류에서Dev

요청 된 클래스를로드 할 수 없습니다 : PHPExcel

분류에서Dev

Java DB 설정 시도 : "클래스를 찾을 수 없음 : JDBC 드라이버 org.apache.derby.jdbc.EmbeddedDriver를로드 할 수 없습니다."

분류에서Dev

Windows 드라이버를로드 할 수 없습니다.

분류에서Dev

netezza JDBC 드라이버를로드 할 수 없습니다.

분류에서Dev

Windows의 ODBC 드라이버를로드 할 수 없습니다.

분류에서Dev

처음으로 MySQL 서버를 시작할 수 없습니다.

분류에서Dev

JDBC 드라이버 클래스 'com.mysql.jdbc.Driver'소나 플러그인을로드 할 수 없습니다.

분류에서Dev

클래스 C ++에서 + 연산자를 오버로드 할 수 없습니다.

분류에서Dev

C ++의 파생 클래스에서 기본 클래스 메서드를 오버로드 할 수 없습니다.

분류에서Dev

JDBC에 대한 MySQL 커넥터의 클래스 경로-드라이버를로드 할 수 없음

분류에서Dev

PreconditionViolationException : 이름이 testing.ConnectionTest 인 클래스를로드 할 수 없습니다.

분류에서Dev

javassist로 클래스 메소드를 업데이트 할 수 없습니다.

분류에서Dev

클래스 추가 / 제거 후 페이지를로드 할 수 없습니다.

분류에서Dev

Spring이 ApplicationContext xml 파일에서 클래스를로드 할 수 없습니다.

분류에서Dev

.jar로 가져온 클래스를로드 할 수 없습니다.

분류에서Dev

메인 클래스 테스트를 찾거나로드 할 수 없습니다.

분류에서Dev

메인 클래스 테스트를 찾거나로드 할 수 없습니다.

분류에서Dev

드라이버 (.inf)를 수동으로 설치할 수 없습니다.

분류에서Dev

jdbc 드라이버로 mysql에 연결할 수 없습니다.

분류에서Dev

java-MAC-오류 : 기본 클래스 (클래스 이름)를 찾거나로드 할 수 없습니다.

분류에서Dev

파생 클래스는 기본 클래스의 개인 멤버를 다른 기본 클래스의 개인 멤버로 오버로드 할 수 없습니다.

분류에서Dev

클래스를 찾을 수 없음 : com.microsoft.sqlserver.jdbc.Nanos를로드 할 수 없습니다.

분류에서Dev

코 틀린 찾거나 메인 클래스를로드 할 수 없습니다

분류에서Dev

클래스를로드 할 수 없습니다 'org.gradle.api.internal.component.Usage'

분류에서Dev

XCode 12-주 클래스 12를 찾거나로드 할 수 없습니다.

분류에서Dev

Eclipse IDE : 기본 클래스를 찾거나로드 할 수 없습니다.

Related 관련 기사

  1. 1

    예외는 java.lang.IllegalStateException : JDBC 드라이버 클래스를로드 할 수 없습니다.

  2. 2

    LocalContainerEntityManagerFactoryBean JDBC 드라이버 클래스 'org.h2.Driver'를로드 할 수 없습니다. Hibernate SessionFactory를 빌드 할 수 없습니다.

  3. 3

    Android Java에서 클래스를로드 할 수 없습니다.

  4. 4

    요청 된 클래스를로드 할 수 없습니다 : PHPExcel

  5. 5

    Java DB 설정 시도 : "클래스를 찾을 수 없음 : JDBC 드라이버 org.apache.derby.jdbc.EmbeddedDriver를로드 할 수 없습니다."

  6. 6

    Windows 드라이버를로드 할 수 없습니다.

  7. 7

    netezza JDBC 드라이버를로드 할 수 없습니다.

  8. 8

    Windows의 ODBC 드라이버를로드 할 수 없습니다.

  9. 9

    처음으로 MySQL 서버를 시작할 수 없습니다.

  10. 10

    JDBC 드라이버 클래스 'com.mysql.jdbc.Driver'소나 플러그인을로드 할 수 없습니다.

  11. 11

    클래스 C ++에서 + 연산자를 오버로드 할 수 없습니다.

  12. 12

    C ++의 파생 클래스에서 기본 클래스 메서드를 오버로드 할 수 없습니다.

  13. 13

    JDBC에 대한 MySQL 커넥터의 클래스 경로-드라이버를로드 할 수 없음

  14. 14

    PreconditionViolationException : 이름이 testing.ConnectionTest 인 클래스를로드 할 수 없습니다.

  15. 15

    javassist로 클래스 메소드를 업데이트 할 수 없습니다.

  16. 16

    클래스 추가 / 제거 후 페이지를로드 할 수 없습니다.

  17. 17

    Spring이 ApplicationContext xml 파일에서 클래스를로드 할 수 없습니다.

  18. 18

    .jar로 가져온 클래스를로드 할 수 없습니다.

  19. 19

    메인 클래스 테스트를 찾거나로드 할 수 없습니다.

  20. 20

    메인 클래스 테스트를 찾거나로드 할 수 없습니다.

  21. 21

    드라이버 (.inf)를 수동으로 설치할 수 없습니다.

  22. 22

    jdbc 드라이버로 mysql에 연결할 수 없습니다.

  23. 23

    java-MAC-오류 : 기본 클래스 (클래스 이름)를 찾거나로드 할 수 없습니다.

  24. 24

    파생 클래스는 기본 클래스의 개인 멤버를 다른 기본 클래스의 개인 멤버로 오버로드 할 수 없습니다.

  25. 25

    클래스를 찾을 수 없음 : com.microsoft.sqlserver.jdbc.Nanos를로드 할 수 없습니다.

  26. 26

    코 틀린 찾거나 메인 클래스를로드 할 수 없습니다

  27. 27

    클래스를로드 할 수 없습니다 'org.gradle.api.internal.component.Usage'

  28. 28

    XCode 12-주 클래스 12를 찾거나로드 할 수 없습니다.

  29. 29

    Eclipse IDE : 기본 클래스를 찾거나로드 할 수 없습니다.

뜨겁다태그

보관